生产环境 MySQL 表的维护:check、optimize和analyze

标签: 生产 环境 mysql | 发表时间:2013-05-22 15:34 | 作者:linwaterbin
出处:http://blog.csdn.net
      ㈠ optimize
        
        optimize可以回收空间、减少碎片、提高I/O
        目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE
        
        如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如:
        optimize local table table_name;
        

        以下是一个简单测试:


[mysql@odd employees]$ ls -alh t.ibd
-rw-rw---- 1 mysql dba 24M 05-22 16:48 t.ibd

未optimize前、有24M

mysql> optimize table t;
+-------------+----------+----------+-------------------------------------------------------------------+
| Table       | Op       | Msg_type | Msg_text                                                          |
+-------------+----------+----------+-------------------------------------------------------------------+
| employees.t | optimize | note     | Table does not support optimize, doing recreate + analyze instead |
| employees.t | optimize | status   | OK                                                                |
+-------------+----------+----------+-------------------------------------------------------------------+
2 rows in set (3.82 sec)

--对于InnoDB的表、上面的内容并非报错、这是MySQL会帮你映射到:alter table table_name engine='InnoDB';
--MyISAM不会有这种情况


[mysql@odd employees]$ ls -alh t.ibd
-rw-rw---- 1 mysql dba 14M 05-22 16:49 t.ibd
  
optimize后、剩14M



      ㈡ check
        
        检查表或视图的有无错误
        支持表引擎有:InnoDB和MyISAM
        
        下面简单模拟一个测试:


mysql> check table t;
+-------------+-------+----------+----------+
| Table       | Op    | Msg_type | Msg_text |
+-------------+-------+----------+----------+
| employees.t | check | status   | OK       |
+-------------+-------+----------+----------+
1 row in set (0.63 sec)

--没有错误的情况是这样的

--用vim打开t.frm随意编辑两把

mysql> check table t\G;
*************************** 1. row ***************************
   Table: employees.t
      Op: check
Msg_type: Error
Msg_text: Incorrect information in file: './employees/t.frm'
*************************** 2. row ***************************
   Table: employees.t
      Op: check
Msg_type: error
Msg_text: Corrupt
2 rows in set (0.00 sec)

--报错了



     
      ㈢ analyze
        
        用于收集优化器统计信息、和tuning相关、
        这个命令对 MyISAM、BDB、InnoDB 存储引擎的表有作用
        如果不想记录到binlog、也可加关键字local或者另外一个


mysql> analyze table t\G;
*************************** 1. row ***************************
   Table: employees.t
      Op: analyze
Msg_type: Error
Msg_text: Incorrect information in file: './employees/t.frm'
*************************** 2. row ***************************
   Table: employees.t
      Op: analyze
Msg_type: error
Msg_text: Corrupt
2 rows in set (0.00 sec)



作者:linwaterbin 发表于2013-5-22 23:34:00 原文链接
阅读:160 评论:0 查看评论

相关 [生产 环境 mysql] 推荐:

[MySQL] 生产环境MySQL数据库事务一直在RUNNING

- - CSDN博客数据库推荐文章
运营人员反映,有一单子提交卡住了,页面一直没有返回. 1,刚开始怀疑是应用服务器或者db压力过高hang住了,马上去check应用服务器以及db的负载,看起来都OK,蛮低的,应该不是DB性能问题. 2,最后去看下是否是表锁住了,查看到有2个事务一直RUNNING,没有结束. 3,通过trx_mysql_thread_id: 1662332的去查询information_schema.processlist找到执行事务的客户端请求的SQL线程.

MySQL生产环境突发故障处理手册

- gOODiDEA - MySQL OPS
1.2 碎片整理和统计信息更新 OPTIMIZE 操作等于recreate + analyze 的组合操作,所以会堵塞更新类型SQL语句. 对于备机上跑只读类型操作的业务,可以考虑使用此操作命令,对于主服务器不建议使用此命令,为此备机上执行OPTIMIZE 语句,必须这样写: [...].

生产环境 MySQL 表的维护:check、optimize和analyze

- - CSDN博客数据库推荐文章
        optimize可以回收空间、减少碎片、提高I/O.         目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE.         如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如:.         以下是一个简单测试:.

MySQL数据库开源软件版本 生产环境GA版本如何选择

- - MySQLOPS 数据库与运维自动化技术分享
很多技术朋友向我咨询过关于选择MySQL数据库软件产品的版本事宜,他们对于开源软件产品的版本选择没有头绪,不知道从何下手. 不过,我们本文主要是介绍开源数据库产品的版本如何选择,如何选择生产环境的MySQL数据库版本. MySQL数据库版本的选择需要经过那些工序. 顺道分享下我们DBA团队是如何为生产环境,选择合适的MySQL数据库版本.

PHP+MySQL环境下SQL Injection攻防总结

- rokeyhu - 老王的技术手册 ( 我的新博客:http://huoding.com )
程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过. 其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报错,然后一点一点的修正参数内容,当程序再次运行成功之时,注入也就随之成功了. 假设你的程序里有类似下面内容的脚本:.

项目进阶 之 集群环境搭建(二)MySQL集群

- - CSDN博客推荐文章
        上次的博文中我们介绍了一下集群的相关概念,今天的博文我们介绍一下MySQL集群的相关内容.         MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障.         MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的.

MySQL分库分表环境下全局ID生成方案

- - 数据库 - ITeye博客
数据库自增ID——来自Flicker的解决方案. 独立的应用程序——来自Twitter的解决方案. 在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作. 在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象. 但是当我们对数据库进行了分库分表后,就不能依赖于每个表的自增ID来全局唯一标识这些数据了.

在生产环境运行容器

- - IT瘾-tuicool
【编者的话】Vivek Juneja是一名工作首尔的云服务工程师. 他从2008年就开始接触云服务,是最早的AWS和Eucalyptus的使用者. 本文中总结了在生产环境中使用容器的几个方面,特别是对虚拟机与容器的混合部署的观点很值得推荐给大家. 如果只是把容器限制在开发测试环境中,那么您并没有享受到面向容器研发和发布工作的全部红利.

[MySQL FAQ]系列 — 线上环境到底要不要开启query cache

- - MySQL中文网
Query Cache(查询缓存,以下简称QC)存储SELECT语句及其产生的数据结果,特别适用于:频繁提交同一个语句,并且该表数据变化不是很频繁的场景,例如一些静态页面,或者页面中的某块不经常发生变化的信息. InnoDB Buffer Pool或者. MyISAM key buffer里读取结果.

linux、mysql、nginx、tomcat 环境下压力测试的主要调试参数

- - SegmentFault 最新的文章
一、linux 系统内核参数. /etc/sysctl.conf文件常用参数. net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目 net.core.rmem_max = 8388608. #SOCKET读缓存区大小 net.core.wmem_max = 8388608.