第一层
连接处理,授权认证
第二层
查询解析、分析、优化、缓存以及内置函数。还有一些跨存储引擎的功能,如存储过程、触发器、视图等。
第三层
存储引擎,负责数据的存储与提取。
读锁是共享的,互相不阻塞的。 写锁是排它的,一个写锁会阻塞其它的写锁或读锁。
表锁 比如Alter Table语句会使用表锁
行级锁 最大程度的并发处理。在 InnoDB中实现了行级锁。行锁只在存储引擎层实现,MySql服务器层没有实现。
ACID 原子性、一致性、隔离性以及持久性
隔离性
通常来说(取决于事务的隔离级别),一个事务所做的修改在最终提交之前,对其它事务是不可见的。
多版本并发控制
通过保存版本号,使得大多数读才错都可以不用加锁。
注意:MVCC只在可重复读与已提交读级别下有用。Serializable 会对所有读取的行都加锁。
创建表时,Mysql 会在数据库子目录下创建一个和表同名的.frm文件保存表的定义。 例如创建一个名为MyTable的表,Mysql会在 MyTable.frm 文件中保存该表的定义。 不同存储引擎保存数据和索引的方式是不同的,但表的定义是在Mysql服务层统计处理的,跟存储引擎无关。 可以使用 show table status like 'user';(或查询 INFORMATION_SCHEMA中对应的表)显示表的相关信息。