logo资料库

高性能Mysql演示文稿.pptx

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
1.1 mysql查询逻辑、架构 连接/线程处理 查询 缓存 解析 器 优化器 存储引擎 1、最上层服务/连接层:提供连接处理,授权认证,安全等 2、第二层/服务层:提供大多Mysql核心服务功能,查询解析,分析,优 化,缓存,内置函数。跨存储引擎功能也在服务层实现:存储过程,触发 器,视图。 3、第三层/存储引擎层:服务层通过API与存储引擎进行通信。存储引擎不 解析sql,不相互通信,只简单响应上层服务请求
1.1.2 mysql查询执行基础 - 客户端 - 查询缓存 - 查询优化处理 - 查询执行引擎
1.1.3 查询优化处理 语法解析器 -- 通过关键字将sql进行解析,生成对应“解析树”。解析器使用Mysql语法规则验证和解析查询 预处理 -- 根据Mysql语法规则进一步检查解析树是否合法,和权限验证 查询优化器 -- 优化器将语法树转化为执行计划,并且优化器负责找出(系统认为)最优的执行计划。
1.2 Mysql存储引擎 1.2.1 InnoDB存储引擎 Mysql默认事务型引擎,也是使用最广泛的存储引擎。除非特别需要,应该优先考虑 InnoDB引擎。 InnoDB概览: InnoDB数据存储在表空间中(tablespace),Mysql4.1以后的版本,InnoDB可以将表数 据和索引存放在单独的文件中。 InnoDB采用MVCC来支持高并发,并实现了四个标准的隔离级别。 InnoDB表是基于聚簇索引建立的。 InnoDB能自动在内存中创建hash索引,即加速读取操作的自适应哈希索引。 InnoDB不能显式的支持hash索引。
1.2 Mysql存储引擎 1.2.2 MyISAM存储引擎(搜索引擎) MyISAM搜索引擎在Mysql5.1之前的版本是默认的存储引擎,MyISAM提供 全文索引,压缩,空间函数等,但是不支持事务,和行级锁。 MyISAM将表存储在两个文件中:数据文件和索引文件。 MyISAM特性: 加锁与并发: MyISAM对整表加锁,读取时对读取的所有表加共享锁,写入时对表加排他锁。在读取时可以进行记录插入 索引特性: MyISAM支持BLOB和TEXT等长字段,也可以基于前500个字符建立索引,InnoDB不支持长字符索引。 延迟更新索引键 创建MyISAM表的时候,如果指定DELAY_KEY_WAITE选项,每次修改执行完成不会立即将修改索引数据写入磁 盘,而是先写入键缓冲区,只有在清理键缓冲区的时候,才会将对应索引块写入磁盘。 MyISAM性能: MyISAM引擎设计简单,数据以紧密格式存储,在默写场景写性能很好。 MyISAM最典型的性能问题——表锁问题。读取的时候共享锁,写入时排他锁,这会导致所有的查询长期处于 “Locked”状态。
1.2 Mysql存储引擎 1.2.3 其他存储引擎 Archive引擎:只支持INSERT和SELECT操作 CSV引擎:CSV引擎可以作为数据交换的机制——CSV引擎可以将普通的CSV文件作为Mysql 表来处理(不支持索引)。可以将Excel等电子表格软件中的数据存为CSV文件,然后复制到 mysql数据目录下,进行访问 Memory引擎:显式支持Hash索引,查找快。不支持BLOB或TEXT类型,并且行长度是固 定的。Memory表示表级锁,写入性能低。 用于缓存周期性聚合数据,或保存数据分析产生的中间数据(中间表),这类场景, Memory引擎可以发挥好的作用。
1.3 Mysql并发控制 1.3.1 读写锁 读写锁又称共享锁、排他锁 读锁:读锁是共享的,多个客户端在同一时刻,同时读取相同资源,互不干扰。 写锁:写锁是排他的,一个写锁会阻塞其他的写锁,和读锁。防止其他用户读取,或者写入当 前写锁正在操作的同一资源。
分享到:
收藏