Analyze Table(修复索引)
MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应的列包含多少个不同的值——如果cardinality大大少于数据的实际散列程度,那么索引就基本失效了。
我们可以使用SHOW INDEX语句来查看索引的散列程度:
SHOW INDEX FROM PLAYERS;
TABLE KEY_NAME COLUMN_NAME CARDINALITY
------- -------- ----------- -----------
PLAYERS PRIMARY PLAYERNO 14
因为此时PLAYER表中不同的PLAYERNO数量远远多于14,索引基本失效。
下面我们通过Analyze Table语句来修复索引:
ANALYZE TABLE PLAYERS;
SHOW INDEX FROM PLAYERS;
结果是:
TABLE KEY_NAME COLUMN_NAME CARDINALITY
------- -------- ----------- -----------
PLAYERS PRIMARY PLAYERNO 1000
此时索引已经修复,查询效率大大提高。
需要注意的是,如果开启了binlog,那么Analyze Table的结果也会写入binlog,我们可以在analyze和table之间添加关键字local取消写入。
Checksum Table(校验表)
数据在传输时,可能会发生变化,也有可能因为其它原因损坏,为了保证数据的一致,我们可以计算checksum(校验值)。
使用MyISAM引擎的表会把checksum存储起来,称为live checksum,当数据发生变化时,checksum会相应变化。
在执行Checksum Table时,可以在最后指定选项qiuck或是extended;quick表示返回存储的checksum值,而extended会重新计算checksum,如果没有指定选项,则默认使用extended。
Optimize Table(感觉像整理磁盘碎片一样)
经常更新数据的磁盘需要整理碎片,数据库也是这样,Optimize Table语句对MyISAM和InnoDB类型的表都有效。
如果表经常更新,就应当定期运行Optimize Table语句,保证效率。
与Analyze Table一样,Optimize Table也可以使用local来取消写入binlog。
Check Table(检查修复错误)
数据库经常可能遇到错误,譬如数据写入磁盘时发生错误,或是索引没有同步更新,或是数据库未关闭MySQL就停止了。
遇到这些情况,数据就可能发生错误:
Incorrect key file for table: ' '. Try to repair it.
此时,我们可以使用Check Table语句来检查表及其对应的索引。
譬如我们运行
CHECK TABLE PLAYERS;
结果是
TABLE OP MSG_TYPE MSG_TEXT
-------------- ----- -------- --------
TENNIS.PLAYERS check status OK
MySQL会保存表最近一次检查的时间,每次运行check table都会存储这些信息:
执行
SELECT TABLE_NAME, CHECK_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'PLAYERS'
AND TABLE_SCHEMA = 'TENNIS'; /*TENNIS是数据库名*/
结果是
TABLE_NAME CHECK_TIME
---------- -------------------
PLAYERS 2006-08-21 16:44:25
Check Table还可以指定其它选项:
UPGRADE:用来测试在更早版本的MySQL中建立的表是否与当前版本兼容。
QUICK:速度最快的选项,在检查各列的数据时,不会检查链接(link)的正确与否,如果没有遇到什么问题,可以使用这个选项。
FAST:只检查表是否正常关闭,如果在系统掉电之后没有遇到严重问题,可以使用这个选项。
CHANGED:只检查上次检查时间之后更新的数据。
MEDIUM:默认的选项,会检查索引文件和数据文件之间的链接正确性。
EXTENDED:最慢的选项,会进行全面的检查。
Repair Table(修复索引)
用于修复表,只对MyISAM和ARCHIVE类型的表有效。
这条语句同样可以指定选项:
QUICK:最快的选项,只修复索引树。
EXTENDED:最慢的选项,需要逐行重建索引。
USE_FRM:只有当MYI文件丢失时才使用这个选项,全面重建整个索引。
与Analyze Table一样,Repair Table也可以使用local来取消写入binlog。
分享到:
相关推荐
本资源"MySQL 常用命令大全整理 chm 格式"提供了一个全面的参考指南,帮助用户快速查找并理解MySQL中的各种操作指令。 一、MySQL安装与启动 在开始使用MySQL之前,你需要先安装它。这通常涉及下载安装包,按照提示...
根据提供的文件信息,我们可以...以上就是根据给定文件信息整理出的MySQL相关知识点,包括连接MySQL、基本的数据库和表管理操作、用户权限管理等方面的内容。希望这些信息能够帮助您更好地理解和使用MySQL数据库系统。
### MySQL常用命令整理 在日常工作中,MySQL作为一款广泛使用的开源关系型数据库管理系统,其重要性不言而喻。为了帮助初学者更好地理解和掌握MySQL的基本命令,本文将根据提供的文件内容整理出一系列实用且常见的...
内容概要:本文档整理了 MySQL 数据库管理系统中的常用命令,包括连接和断开数据库、创建和删除数据库、创建和删除数据表、插入和删除数据、备份和恢复数据库等功能。这些命令帮助开发者管理和维护 MySQL 数据库。 ...
MySQL数据字典生成工具是一种实用程序,用于帮助数据库管理员和开发者整理并理解MySQL数据库的结构。数据字典在IT行业中是数据库管理系统中的一个重要组成部分,它提供了关于数据库对象(如表、视图、索引等)的详细...
**PHP MySQL数据字典生成器的工作原理** 1. **连接MySQL数据库**:通过PHP的mysqli或PDO_MySQL扩展,建立与MySQL服务器的连接,获取数据库名、用户名和密码等信息。 2. **查询数据库元数据**:使用SQL语句(如`...
MySQL 数据导入导出数据整理 MySQL 是一个流行的关系型数据库管理系统,广泛应用于各种 web 应用程序中。作为一个数据库管理员,了解如何导入和导出数据是一项非常重要的技能。本文将详细介绍如何使用 mysqldump ...
### 经典MySQL数据库知识整理 #### 概述 本文档旨在为初学者及有一定基础的用户快速掌握MySQL的核心操作提供便利。从基础的数据库创建、表结构设计,到更高级的功能如触发器、索引、函数以及存储过程等,都通过实际...
根据提供的文件信息,我们可以整理出以下几个重要的MySQL特殊命令知识点: ### 1. 设置结果集字符集:`set character_set_result=utf-8;` **知识点详解:** - **命令功能**:此命令用于设置MySQL查询结果集的字符...
这个压缩包文件是针对餐饮旅游行业的数据整理,对于分析旅游趋势、餐饮业分布或者进行相关业务决策具有很高的价值。 在IT领域,数据库是存储和管理信息的核心工具,而MySQL是一种广泛使用的开源关系型数据库管理...
根据提供的文件内容,我们可以整理出一系列关于MySQL的重要知识点与实用命令。MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),适用于多种应用场景,包括网站、应用程序和个人项目等。以下是对这些知识点...
### MySQL中常用命令整理 在本文档中,我们将详细介绍MySQL中常用的命令及其应用场景,帮助读者更好地理解和掌握这些命令。MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),支持多种操作系统,如Windows...
### MySQL命令整理与详解 #### 一、连接MySQL MySQL是一种广泛使用的开源关系型数据库管理系统。连接MySQL数据库是对其进行管理的基础。 ##### 1. 连接到本机上的MySQL 连接到本地MySQL数据库是最常见的场景之一...
根据提供的文件信息,我们可以整理出一系列关于MySQL数据库的常用命令及其使用方法。下面将详细介绍这些命令,以便更好地理解和掌握MySQL数据库的基本操作。 ### 一、备份数据库 #### 1. 备份整个数据库到文件 ```...
以上是基于给定的文件内容整理出来的MySQL常用命令的详细知识点,涵盖了数据库、表、索引、视图以及数据更新操作的基本命令,对于初学者来说,熟练掌握这些命令将有助于更高效地管理和操作MySQL数据库。
标题中的“2020省市区2019省市区街道4级MySQL数据.zip”表明这是一个包含中国省级、市级、区县级以及街道四级行政区域信息的数据库,且数据已整理成MySQL格式,方便导入数据库系统进行管理和分析。描述中提到,数据...
根据提供的文件信息,我们可以整理出一系列关于MySQL的基本命令与语法格式的重要知识点: ### MySQL 命令集锦和语法格式 #### 1. 查询数据库版本和当前日期 ```sql SELECT VERSION(), CURRENT_DATE; ``` 该命令...
MySQL面试整理2 为什么使用数据库 使用数据库有很多优点,包括: * 存取速度快:数据库可以快速地存取数据,这对应用程序的性能有很大的影响。 * 数据永久保存:数据库可以永久保存数据,即使在断电或其他故障...
MySQL是世界上最流行的关系型数据库管理系统之一,被广泛应用于网站开发、数据分析、企业系统等领域。这份学习文档涵盖了MySQL的基础知识和核心概念,对于初学者来说是一个很好的起点。 1. **DOS下的常用操作**:在...