最顶层是连接处理,授权认证,安全等网络服务器基本都需要的东西第二层包括mysql大部分核心内容,包括查询解析,分析,优化及所有内建函数(如日期,函数,数学和加密函数等)的代码,存储过程,触发器,等功能也集中在这一层。第三层是存储引擎,存储引擎不会进行SQL解析,也不会互相通信,它们只是简单的访问服务器的清求。
mysql会解析查询,并创建一个解析树,然后对其进行各种优化。其中包括重写查询,决定查询的读表顺序,选择须使用的索引。在解析查询之前,服务器会"询问"缓存,如果能在缓存中找到结果,则直接返回给客户端。
mysql通过set transaction isolation level设置对应的隔离级别
主要的存储文件有.frm主要是用来记录表结构。.MYD存储数据.MYI存储索引。myisam支持的是表级锁,通过check table 检查是否损坏,通过repair table修复myisam 支持全文索引,myisam 可以进行压缩(myisampck)适用于非事务型应用,只读类应用。
.frm文件存储了innodb表结构文件innodb有表空间的概念。当innodb_file_per_table=ON时。则采用独立表空间,此时,innodb数据存储在tablename.ibd文件中,否则,则采用系统表空间,存储在ibdataX中innodb支持事务,通过Redo Log 和Undo Log来进行实现。undo log主要是帮助未提交事务进行回滚和MVCC(多版本并发控制),redo log 存储的是已经提交的事务。innodb支持行级锁。是mysql 5.5后的默认存储引擎,其主要的适用场景是有事务处理的情况。
csv存储引擎的是以文本形式存储,可以直接进行编辑存储文件主要有.CSV文件主要是用来存储表内容,.CSM文件存储表的元数据如表状态和数据量.frm文件存储表结构信息。csv存储引擎列不能为空,不支持索引。csv存储引擎适用于数据交换的中间表 电子表格 ->> csv 文件 ->> mysql数据
Archive存储引擎以zlib对表数据进行压缩,磁盘I/O更少。只支持insert和select操作,并且只能在自增列上建立索引。以.ARZ存储数据可以用于日志和数据采集的表
Memory存储引擎的所有数据都是存储在内存中。支持HASH和BTree索引。所有的字段都是固定长度,不支持BLOG和TETX类型,使用表级锁。引擎的大小由max_heap_table_size参数决定。
新闻热点
疑难解答