先大体看一下MySQL的SQLlayer层的一个架构流程: 对一些关键模块做一下简单的描述:1. 初始模块:初始一些参数,比如初始myinit配置文件(在安装的根目录下)里的一些参数。2. 连接管理模块:启动监听,监听连接请求3. 连接进程模块:可以理解为线程池4. 用户模块:检验用户,令牌和权限5. 命令分发器:处理不同类型的请求6. 查询缓存模块:做缓存处理,做查询的cache,可以理解为一个Map,查询语句为key,结果值为value7. 日志记录模块8. 命令解析器(parser):对于不同类型的sql语句进行处理分发,select:查询优化器,dml:表变更模块,ddl:表维
MySQL架构:采用C/S架构,即客户端/服务器。客户端和服务器区分开,通过客户端发送请求来和服务器交互。过程:用户通过开发的应用程序来访问数据库(C/S),应用程序通过连接器(connecter)连接到数据库。连接器包含了各种开发语言的接口,连接完成后MySQL会分配一个线程提供服务,执行对应操作的时候就会调用MySQL定义好的接口组件来接收请求。把sql语句解析完成后,结合当前数据库状态来优化对应操作。mysql利用caches和buffer来提高系统系统性能。数据读出和写入的时候会通过存储引擎来选择数据的相关操作,最后写入磁盘或内存。目前主流的存储引擎:存储引擎:MySQL管理数据文件的
MySQL架构:采用C/S架构,即客户端/服务器。客户端和服务器区分开,通过客户端发送请求来和服务器交互。过程:用户通过开发的应用程序来访问数据库(C/S),应用程序通过连接器(connecter)连接到数据库。连接器包含了各种开发语言的接口,连接完成后MySQL会分配一个线程提供服务,执行对应操作的时候就会调用MySQL定义好的接口组件来接收请求。把sql语句解析完成后,结合当前数据库状态来优化对应操作。mysql利用caches和buffer来提高系统系统性能。数据读出和写入的时候会通过存储引擎来选择数据的相关操作,最后写入磁盘或内存。目前主流的存储引擎:存储引擎:MySQL管理数据文件的
Mysql存储引擎:1.MyISAM1.1MyISAM存储组成MyISAM的存储格式主要有:1、数据文件:存储数据行,数据文件扩展名为.MYD(MYData)。2、索引文件:存储索引数据,索引文件扩展名为.MYI(MYIndex)。3、frm文件:存储表定义信息,主要包括表列和列定义信息、各种属性、扩展及MyISAM的表的各种参数等信息,表定义扩展名为.MYD(MYData)。4、opt文件:存储MyISAM表的相关选项,将缓存的表据放在此文件中。 1.2MyISAM具有的特点:1.不支持事务:MyISAM表不支持事务处理,无法保证多次操作要么全部成功,要么全部失败,若不小心造成数据损坏只能重
Mysql存储引擎:1.MyISAM1.1MyISAM存储组成MyISAM的存储格式主要有:1、数据文件:存储数据行,数据文件扩展名为.MYD(MYData)。2、索引文件:存储索引数据,索引文件扩展名为.MYI(MYIndex)。3、frm文件:存储表定义信息,主要包括表列和列定义信息、各种属性、扩展及MyISAM的表的各种参数等信息,表定义扩展名为.MYD(MYData)。4、opt文件:存储MyISAM表的相关选项,将缓存的表据放在此文件中。 1.2MyISAM具有的特点:1.不支持事务:MyISAM表不支持事务处理,无法保证多次操作要么全部成功,要么全部失败,若不小心造成数据损坏只能重
MyISAMInnoDB事务X√行锁X√外键X√全文搜索√X表空间的大小较小较大,约为MyISAM的2倍MyISAMMyISAM是MySQL5.5版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用。而且MyISAM不支持外键,索引和数据是分开存储的。InnoDBInnoDB是MySQL5.5版本之后的默认引擎,基于聚簇索引建立的,支持事务、外键、行级锁,并且通过MVCC来支持高并发,索引和数据存储在一起。如何选择如果需要事务,选择InnoDB,不需要则选择MyISAM。如果大部分表操作都是查询,选择MyISAM,有写又有读选I
MyISAMInnoDB事务X√行锁X√外键X√全文搜索√X表空间的大小较小较大,约为MyISAM的2倍MyISAMMyISAM是MySQL5.5版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用。而且MyISAM不支持外键,索引和数据是分开存储的。InnoDBInnoDB是MySQL5.5版本之后的默认引擎,基于聚簇索引建立的,支持事务、外键、行级锁,并且通过MVCC来支持高并发,索引和数据存储在一起。如何选择如果需要事务,选择InnoDB,不需要则选择MyISAM。如果大部分表操作都是查询,选择MyISAM,有写又有读选I
MySQL默认数据库引擎事务支持索引类型索引数据结构对锁的支持使用场景关于count(*)外键支持InnoDB5.1版本后,是默认为Readcommitted聚集索引,叶子节点直接存储数据,写快读慢;非主键索引先查询主键,数据和主键存储在一起,没有主键时使用第一非空的唯一索引(NOTNULLandUNIQUEINDEX),也没有的话使用6字节的自增数值作为聚簇索引B+树行锁和表锁支持事务,写多读少需要扫描数据查询支持MyISAM5.1版本后,否不支持非聚集索引,叶子节点存储主键信息,写慢读快;非主键索引直接查询数据,数据单独存储B+树表锁不需要支持事务,读多写少存储直接输出,注意如果查询含w
MySQL默认数据库引擎事务支持索引类型索引数据结构对锁的支持使用场景关于count(*)外键支持InnoDB5.1版本后,是默认为Readcommitted聚集索引,叶子节点直接存储数据,写快读慢;非主键索引先查询主键,数据和主键存储在一起,没有主键时使用第一非空的唯一索引(NOTNULLandUNIQUEINDEX),也没有的话使用6字节的自增数值作为聚簇索引B+树行锁和表锁支持事务,写多读少需要扫描数据查询支持MyISAM5.1版本后,否不支持非聚集索引,叶子节点存储主键信息,写慢读快;非主键索引直接查询数据,数据单独存储B+树表锁不需要支持事务,读多写少存储直接输出,注意如果查询含w