mysql优化三 (两个简单实用的优化方法)

一、定期检查表和分析表

分析表的语法如下:

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

本语句用于分析和存储表的关键字分布,分析的结果将可以使得系统得到准确的统计信 息,使得 SQL 能够生成正确的执行计划。如果用户感觉实际执行计划并不是预期的执行计 划,执行一次分析表可能会解决问题。在分析期间,使用一个读取锁定对表进行锁定。这对 于 MyISAM, BDB 和 InnoDB 表有作用。对于 MyISAM 表,本语句与使用 myisamchk -a 相当, 下例中对表 sales 做了表分析:

mysql> analyze table sales\G;

*************************** 1. row ***************************

Table: test1.sales

Op: analyze

Msg_type: status

Msg_text: OK

1 row in set (0.01 sec)

检查表的语法如下:

CHECK TABLE tbl_name [, tbl_name] ... [option] ... option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

检查表的作用是检查一个或多个表是否有错误。CHECK TABLE 对 MyISAM 和 InnoDB 表有作用。 对于 MyISAM 表,关键字统计数据被更新,例如:

mysql> check table sales\G;

*************************** 1. row ***************************

Table: test1.sales

Op: check

Msg_type: status

Msg_text: OK

1 row in set (0.11 sec)

二、定期优化表

优化表的语法如下:

如果已经删除了表的一大部分,或者如果已经对含有可变长度行的表(含有 VARCHAR、 BLOB 或 TEXT 列的表)进行了很多更改,则应使用 OPTIMIZE TABLE 命令来进行表优化。这个 命令可以将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费,但 OPTIMIZE TABLE 命令只对 MyISAM、BDB 和 InnoDB 表起作用。

以下例子显示了优化表 sales 的过程:

mysql> optimize table sales\G;

*************************** 1. row ***************************

Table: test1.sales

Op: optimize

Msg_type: status

Msg_text: OK

2 rows in set (0.40 sec)

注意:ANALYZE、CHECK、OPTIMIZE 执行期间将对表进行锁定,因此一定注意要在数据库不 繁忙的时候执行相关的操作。

时间: 2024-08-04 10:11:28

mysql优化三 (两个简单实用的优化方法)的相关文章

【健康】下蹲5分钟,等于步行1小时!最简单实用的锻炼方法

[健康]下蹲5分钟,等于步行1小时!最简单实用的锻炼方法 2017-07-19人民日报 "人老脚先衰,树枯根先竭".如果你不想过早衰老,便要保证脚部不衰老,所谓"养生先养脚"."腿勤人长寿",重视腿部.脚部的保健养生,可起到防病治病.健康长寿的功效. 下蹲功 不用花钱,无需器具和场地,只要方便,在家里.公司办公室里或公园,只要有立足之地便可:无论多忙的人,想要健康,每天只需5~15分钟的练习就可以. 双脚是运行气血.联络脏腑.沟通内外.贯穿上下的

数据库 两个简单实用的表级优化方法

analyze table 表名;    //分析和存储表的关键字分布 check table 表名; //检查一个或多个表是否有错误 optimize table 表名;  //如果含有可变长度行的表如果进行了很多更改,则会出现比较多碎片. 索引不能使用的原因: (1)以%开头的LIKE查询不能够利用B-Tree索引 : select * from actor where last_name like '%NI%' 应(select * from (select actor_id from a

SQL简单实用的优化方法

分析表:MyISAM.InnoDB.BDB mysql> analyze table payment; #MyISAM 使用myisamchk -a +----------------+---------+----------+----------+ | Table          | Op      | Msg_type | Msg_text | +----------------+---------+----------+----------+ | sakila.payment | ana

Gradle实现的两种简单的多渠道打包方法

Android多渠道打包Gradle多渠道打包友盟多渠道打包productFlavors 本来计划今天发Android的官方技术文档的翻译——<Gradle插件用户指南>的第五章的,不过由于昨天晚上没译完,还差几段落,所以只好推后了. 今天就说一下使用Gradle进行类似友盟这样的多渠道打包的方法吧. 本文原创,转载请注意在CSDN上的出处: http://blog.csdn.net/maosidiaoxian/article/details/42000913 目前我掌握的方法有两种,都非常简

[转]VS2005/2008过期之后简单实用的升级方法

网络上有不少key,但是用了之后没效果,发现了一个好方法可以解决.  把\vs\setup\下面的 setup.sdb文件用文本编辑器打开,然后改动其最后的一行([Product Key] 下面的一行),将其改为可用的key({ KGR3T-F2C26-RRTGT-D6DQT-QBBB3})然后将编辑过的setup.sdb替换原来的 文件. OK,安成! 下面是网络上通用的一般方法:但是很多人反映效果不佳,原因在于缺少了上面的步骤: VS2005:         在“添加删除”里面选择删除“v

MySQL优化聊两句

原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手,很多运维从业者一说起优化就不知所措,当运营过程中某个参数值到达一定阀值之后,就会出现各种问题,很多运维工程师这时不知所措,第一可能也从来没有处理过类似情况,另一方面业务又紧张,系统不正常,首要任务是解决问题,那没办法只能重启了,我们先不说重启是否可行,比如有些应用可以重启并且解决了问题,但如没有解决

mysql模块简单实用操作-----nodejs

1 //mysql模块简单实用操作 2 3 var mysql = require('mysql'); 4 5 mc = {}; 6 7 8 var dbconfig = { 9 host : 'xxxxxxxxxx', 10 user : 'xxx', 11 password : 'xxx', 12 database : 'xxxxx' 13 }; 14 15 16 17 mc.sqlExc = function (sql, next) { 18 var db = mysql.createCo

xtrabackup 备份mysql数据库三: innobackupex 测试一个全量和两个增量的备份恢复测试

## 查看当前库中表的数据 ([email protected]) [test]>select count(*) from t_innodb; +----------+ | count(*) | +----------+ |        0 | +----------+ 1 row in set (0.00 sec) ## 执行插入数据操作,该操作在全备之后执行完成 ([email protected]) [test]>call addTest(100000,0); ## 执行全库备份 #

mysql索引结构原理、性能分析与优化

原文  http://wulijun.github.com/2012/08/21/mysql-index-implementation-and-optimization.html 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页查阅找出需要的资料. 唯一索引(unique index) 强调唯一,就是索引值必须唯一. 创建索引: create unique index 索引名 on 表名(列