博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

mysql 优化

Posted on 2017-01-03 09:50  moss_tan_jun  阅读(102)  评论(0编辑  收藏  举报

http://www.ttlsa.com/mysql/mysql-innodb-storage-engine-parameters-detailed-and-optimization/

 

ql_cache意思是说,查询的时候使用缓存。

sql_no_cache意思是查询的时候不适用缓存。

 

sql_buffer_result意思是说,在查询语句中,将查询结果缓存到临时表中。

 

这三者正好配套使用。sql_buffer_result将尽快释放表锁,这样其他sql就能够尽快执行。

 

使用 --------------------------------------------------

 

那么MySQL到底是怎么决定到底要不要把查询结果放到查询缓存中呢?

 

是根据query_cache_type这个变量来决定的。

 

这个变量有三个取值:0,1,2,分别代表了off、on、demand。

 

意思是说,如果是0,那么query cache 是关闭的。如果是1,那么查询总是先到查询缓存中查找,除非使用了sql_no_cache。如果是2,那么,只有使用 sql_cache的查询,才会去查询缓存中查找

 

 

--------------

对于myisam引擎的表,可以使用optimize table tb_name来进行空间优化。

对于innodb引擎,可使用下列方法:

1、innodb 的optimize table 是映射到alter table的,做大innodb表优化前先drop掉所有的index,然后optimize 完了再rebuild index.速度要快很多。
2、对于使用独立表空间的innodb表,表比较小的可以ALTER TABLE table_name ENGINE = Innodb;表比较大的话,新创建一个表,把数据倒进去然后drop原来表。

-------------------------------------------------------------------------------------------------

ENGINE = Innodb;
这其实是一个NULL操作,表面上看什么也不做,实际上重新整理碎片了。当执行优化操作时,实际执行的是一个空的 ALTER 命令,但是这个命令也会起到优化的作用,它会重建整个表,删掉未使用的空白空间。

OPTIMIZE 可以整理数据文件,并重排索引。【据说仅针对myisam有效】