首页 > 学院 > 开发设计 > 正文

mysql架构

2019-11-06 07:00:43
字体:
来源:转载
供稿:网友

1 MySQL的逻辑架构

最顶层是连接处理,授权认证,安全等网络服务器基本都需要的东西第二层包括mysql大部分核心内容,包括查询解析,分析,优化及所有内建函数(如日期,函数,数学和加密函数等)的代码,存储过程,触发器,等功能也集中在这一层。第三层是存储引擎,存储引擎不会进行SQL解析,也不会互相通信,它们只是简单的访问服务器的清求。

1,1 优化与执行

mysql会解析查询,并创建一个解析树,然后对其进行各种优化。其中包括重写查询,决定查询的读表顺序,选择须使用的索引。在解析查询之前,服务器会"询问"缓存,如果能在缓存中找到结果,则直接返回给客户端。

2 并发控制

2.1 事务

2.1.1 事务的四个特性为:

原子性:原子性保证事务要么全部执行,要么全部滚。一致性:数据库总是以一种一致状态转换为另一种一致状态。隔离性:某个事务只有在完成之后才对其他事务可见。持久性:一旦事务提交,事务所做的数据改变将是永久的。

2.1.2 事务的隔离级别:

READ UNCOMMIT(读未提交):可能会导致"脏读"READ COMMMIT(读已提交):可能导致"不可重复读"REPEATABLE READ(可重复读):可能会导致"幻读"SEARIALIZABLE(串行化):

mysql通过set transaction isolation level设置对应的隔离级别

3 存储引擎

3.1 mysql 常用存储引擎

3.1.1 myisam 存储引擎

主要的存储文件有.frm主要是用来记录表结构。.MYD存储数据.MYI存储索引。myisam支持的是表级锁,通过check table 检查是否损坏,通过repair table修复myisam 支持全文索引,myisam 可以进行压缩(myisampck)适用于非事务型应用,只读类应用。

3.1.2 innodb 存储引擎

.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后的默认存储引擎,其主要的适用场景是有事务处理的情况。

3.1.3 csv存储引擎

csv存储引擎的是以文本形式存储,可以直接进行编辑存储文件主要有.CSV文件主要是用来存储表内容,.CSM文件存储表的元数据如表状态和数据量.frm文件存储表结构信息。csv存储引擎列不能为空,不支持索引。csv存储引擎适用于数据交换的中间表 电子表格 ->> csv 文件 ->> mysql数据

3.1.4 Archive存储引擎

Archive存储引擎以zlib对表数据进行压缩,磁盘I/O更少。只支持insert和select操作,并且只能在自增列上建立索引。以.ARZ存储数据可以用于日志和数据采集的表

3.1.4 Memory存储引擎

Memory存储引擎的所有数据都是存储在内存中。支持HASH和BTree索引。所有的字段都是固定长度,不支持BLOG和TETX类型,使用表级锁。引擎的大小由max_heap_table_size参数决定。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表