Mysql优化
2017-01-17 15:23
176 查看
本质上讲
1.减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。
2.降低 CPU 计算
除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标。
1.最开始 存数据 写应用程序
我们是取一个字段还是多个字段,实际上数据库在表中需要访问的数据量其实是一样的。例子:
select * from t 等价于 select a,b,c from t 。 注意:加索引就不一样了 所以尽量写成 你需要查询的字段 尤其查询的数据仅仅是索引字段时。
大多数关系型数据库都是按照行(row)的方式存储,而数据存取操作都是以一个固定大小的IO单元(被称作 block 或者 page)为单位,一般为4KB,8KB… 大多数时候,每个IO单元中存储了多行,每行都是存储了该行的所有字段(lob等特殊类型字段除外)。
2.然后,当数据量大了,查询太慢,我们需要优化数据库 首先分析
使用--log-slow-queries –long-query-time=2查看查询比较慢的语句。然后使用**explain**分析查询,做出优化。
MySQL> explain select * from t_online_group_records where UNIX_TIMESTAMP(gre_updatetime) > 123456789; +----+-------------+------------------------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+------------------------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | t_online_group_records | ALL | NULL | NULL | NULL | NULL | 47 | Using where | +----+-------------+------------------------+------+---------------+------+---------+------+------+-------------+ 1 row in set (0.00 sec)
如上面例子所示,重点关注下type,rows ,Extra:
type:使用类别,有无使用到索引。结果值从好到坏:const… > range(使用到索引) > index > ALL(全表扫描),一般查询应达到range级别 const代表一次命中
rows:SQL执行检查的记录数
Extra:SQL执行的附加信息,如”Using index”表示查询只用到索引列,不需要去读表等
3.加索引
索引的类型
1.UNIQUE 唯一索引
不可以出现相同的值,可以有NULL值
2.INDEX普通索引
允许出现相同的索引内容
3.PRIMARY KEY主键索引
不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引
4.fulltext index 全文索引
上述三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词, 然而并没有什么卵用,因为只有myisam以及英文支持,并且效率让人不敢恭维,但是可以用coreseek和xunsearch等第三方应用来完成这个需求
建立方式1. sql 2. 工具直接添加
相关文章推荐
- [ZT]优化配置mysql服务器
- MySQL索引分析和优化
- 请教关于mysql的优化
- MySQL索引分析和优化
- MySQL查询优化系列讲座之查询优化器
- [转]LAMP(Linux+Apache+MySQL+PHP)服务器的性能优化
- 从MySQL得到最大的性能 优化
- MySQL查询优化系列讲座之调度和锁定
- 转--MysQL简单优化
- MySQL的优化
- 对拥有一个几十万行表的 MySQL 性能优化的简单办法
- MySQL查询优化技术讲座
- MySQL索引分析和优化
- 优化的my.ini[mysql].1500在线.突破最大连接数
- MySQL优化简明指南
- MySQL 性能优化
- 一些 Mysql 的优化经验
- MySQL索引分析和优化
- MySQL 数据库性能优化方法
- [转]MySQL查询优化技术讲座