mysql 优化

一,查询优化

1.先用 DESC 或 EXPLAIN 分析下查询语句

2.合适的索引

3.使用like 第一个字符是% 不能使用索引

4.多列索引只有查询条件中使用了第一个字段,才能用的索引

5.使用OR关键字,前后两个条件都是索引是才有效

6.优化子查询,使用JOIN 代替子查询

二,表结构优化

1.将字段很多的表中不太常用的字段分解成多个表(select * from member LEFT JOIN detail ON member.id=detail.mid)

2.适当增加冗余字段

三,使用中间表或者缓存一些数据nosql

  对一些需要查询多张表,并且结果更新不是太频繁的,可以使用中间表或者nosql等缓存一下

五,优化写入速度

  越多的索引,写入速度越慢,书上给出的方法是写入前禁用索引和唯一性索引,写入完成后,再开启,我感觉不太靠谱啊

六,定期分析,检查,优化表

  分析表:ANALYZE [LOCAL] TABLE name;

  检查表:CHECK TABLE name option={QUICK|FAST|MEDIUM|EXTENDED|CHANGED}

  优化表:OPTIMIZE [LOCAL] table name;

七,提升服务器硬件性能,和配置

  1.增加缓存

  2.固态硬盘

  3.多处理器

八,优化mysql参数

  key_buffer_size:索引缓冲区大小

  table_cache:同时打开表的个数

  query_cache_type: 0不适用缓冲区,1所有查询使用缓冲区,2只有使用SQL_CACHE才能使用缓冲区

  query_cache_size:查询缓冲区大小

  sort_buffer_size:排序缓冲区大小,这个值越大,进行排序速度越快

  read_buffer_size:每个线程连续扫描时分配的缓冲区大小

  read_rnd_buffer_size:每个线程保留的缓冲区大小

  innodb_buffer_pool_size:innodb类型的表和索引的最大缓存

  max_connections:最大连接数

  thread_buffer_size:表示可以复用的线程数量

  wait_timeout:关闭一个连接时等待的秒数,默认28800

posted @ 2015-09-15 10:26  笑笑别人  阅读(152)  评论(0编辑  收藏  举报