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