简述MySQL体系结构的组成,并描述每个组成部分的作用
主要包括8个部分:
- 连接池:连接数限制,内存检查,缓存检查等.
- SQL接口:用户通过sql客户端发过来的命令,由sql接口接收,sql操作(DML,数据操作语言:查询,修改,升级数据等:DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等;存储过程,视图触发器.
- 分析器:分析查询语句 事务处理 对象访问权限.
- 优化器:优化访问路径,生成执行树
- 缓存和缓冲:保存sql查询结果
- 存储引擎:用于管理存储的文件系统,将逻辑结构转换为物理结构的程序:不同的存储引擎有不同的功能和存储方式.
- 管理工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server打交道,它们对应的都是命令.
- 物理存储设备(文件系统)
MySQL存储引擎 - 作为可插拔式的组件提供
MySQL服务软件自带的功能程序,处理表的处理器
不同的存储引擎有不同的功能和数据存储方式 - 默认的存储引擎
MySQL 5.0/5.1 --> MyISAM
MySQL 5.5/5.6 --> InnoDB
Myisam存储引擎的主要特点
- 支持表级锁
- 不支持事务,事务回滚,外键
相关表文件 - 表名 .frm
- 表名 .MYI
- 表名 .MYD
InnoDB存储引擎主要特点
- 支持行级锁定
- 不支持事务,事务回滚,支持外键
相关的表文件 - xxx.frm,xxx.ibd
- ibdatal
- ib_logfile0
- ib_logfile1
MySQL锁机制
锁粒度
- 表级锁:一次直接对整张表进行加锁
- 行级锁:只锁定某一行.
- 页级锁:对整个页面(MySQL管理数据的基本存储单位)进行加锁
锁类型 - 读锁(共享锁):支持并发读.
- 写锁(互斥锁,排它锁):是独占锁,上锁期间其他线程不能读表或写表.