MySQL是什么

Download Report

Transcript MySQL是什么

MySQL优化介绍
胡伟 [email protected]
2012-1-4
主要内容
• MySQL是什么?
• 存储引擎介绍
• 索引
• 一些优化建议
MySQL是什么
•
Relational Database Management
System(RDMS,关系型数据库)
– ORACLE、SQL Server、DB2
MySQL是什么
•
Why MySQL
–免费
–硬件(pc+本地磁盘 VS 小型机+存储)
– 低成本、可替换、可拓展的架构(关键)
存储引擎介绍
•
数据存储的方式决定了一切
– 如何记录数据
– 如何利用内存
– 控制锁的粒度
• MySQL主要的存储引擎
– MyISAM
– InnoDB
–Memory
存储引擎介绍
•
MyISAM
– Table locks
– 不支持事物
– 文件系统缓存数据,MyISAM缓存索引
存储引擎介绍
•
InnoDB
– Row-level locks
– InnoDB缓存数据和索引
– 支持事务特性,支持四种事务级别(Read
Uncommitted、Read Committed、Repeated Read、Serializable)
存储引擎介绍
•
Memory
– Table locks
– 不支持动态行
–数据大小固定(比如不支持varchar)
– 数据保存在内存中
索引
•
存储引擎介绍
•
MyISAM B+ Tree索引示例图
存储引擎介绍
•
InnoDB B+ Tree索引的区别
– 叶子节点存储的是数据值
– 主键索引与辅助索引不同
–辅助索引的data域存储相应记录主键的值
–辅助索引搜索需要检索两遍索引:首先检索辅助索
引获得主键,然后用主键到主索引中检索获得记录
存储引擎介绍
•
B+树索引使用注意事项
–全列匹配
–最左前缀匹配
–匹配某列的前缀字符串
–范围查询
–查询条件中含有函数或表达式
一些优化建议
•
•
•
•
•
•
•
•
•
表结构设计原则
优化最需要优化的Query
使用Explain 、profile、 SHOW FULL PROCESSLIST等
检测和观察效率和执行状况
在索引中完成排序
只取出需要的Columns,避免select *
仅仅使用最有效的过滤条件
建立有效的多列索引,不要把where中的列都建成单列索
引
减少子查询
默认值不要用null
Q&A
Q&A