mysql架构图
第一层:
connectors 连接器
第二层:连接池
Authentication:提供验证功能
Thread Reuse:线程复用
connection Limits:连接数限制,默认150个
check Memory:内存检查
Caches:缓存,mysql8.0后取消该功能,一般使用redis等缓存服务器
Sql interface:sql接口,用于执行sql命令,一般有DML、DDL等
Parser:解析器
Optimize:优化器
Caches&Buffers:热点数据缓存
Pluggable Storage Engines:存储引擎,mysql5.5后推荐使用innoDB
存储引擎
官方参考链接https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/storage-engines.html
查看mysql存储引擎
mysql> SHOW ENGINES\G
MyISAM存储引擎特点
不支持事务
表级锁定
读写相互阻塞,写入不能读,读时不能写
只缓存索引
不支持外键约束
读取数据较快,占用资源较少
不支持MVCC(多版本并发控制机制)高并发
崩溃恢复性较差
Mysql5.5前默认使用的数据库引擎
MyISAM存储引擎适用的场景
只读(或者写较少)
表较小(可以接受长时间进行修复操作)
MyISAM引擎文件
tbl_name.frm 表格式定义
tbl_name.MYD 数据文件
tbl_name.MYI 索引文件
InnoDB引擎特点
行级锁
支持事务,适合处理大量短期事务
读写阻塞与事务隔离级别相关
可以缓存数据和索引
支持聚集索引
崩溃恢复性更好
支持MVCC高并发
从mysql 5.5后支持全文索引
从mysql5.5后开始为默认数据库引擎
InnoDB数据库文件
所有InnoDB表的数据和索引放置在同一表空间中
数据文件:ibdata1,ibdata2,存放在datadir定义的目录下
表格式定义:tb_name.frm,存放在datadir定义的每个数据库对应的目录下
每个表单独使用一个表空间存储表的数据和索引
两类文件存放在对应每个数据库独立目录中
数据文件(存储数据和索引):tb_name.ibd
表格式定义:tb_name.frm
启用:innodb_file_per_table=ON(MariaDB 5.5以后版本是默认值)
管理存储引擎常用命令
查看mysql支持的存储引擎
show engines;
查看当前默认的存储引擎
show variables like '%storage_engine%';
设置默认的存储引擎
vim /etc/my.cnf
[mysqld]
default_storage_engine= InnoDB
查看库中所有表使用的存储引擎
show table status from [db_name];
查看库中指定表的存储引擎
show table status like 'tb_name';
show create table tb_name;
设置表的存储引擎
create table tb_name(...) engine=InnoDB;
alter table tb_name engine=InnoDB;