网友回复
分析表主要是分析关键字的部分,检查表主要是检查表是否存在错误, 优化表则是消除删除或更新造成的空间浪费。
1.分析表 analyze table mysql 提供了 analyze table语句分析表,analyze table 语句基本语法如下: analyze [local | no_write_to_binlog] table table_name local 关键字是 no_write_to_binlog 的别名,二者都是执行过程不写入二进制日志,这里表名可以有多个, 注意使用analyze table分析表的过程中,数据库系统会对表添加只读锁, 也就是在分析过程中只能读取表中记录,而不能更新和插入记录,该操作能分析 InnoDB,BDB,和 MyISAM表。 analyze local table out_crm_user_day; 分析表其实真正要做的是对表的cardinality(散列程度)进行统计更新,因为它决定是否走索引,如果cardinality和实际数据严重不符,会导致索引失效。show index from out_crm_user_day;
分析表其实就是让上图中的cardinality比较准确
2.检查表check table
数据库经常可能遇到错误,比如数据写入磁盘时发生错误,或是索引没有同步更新,或者数据库未关闭mysql就停止了。遇到这些情况,数据库有可能发生错误: incorrect key file for table:''. try to repair it 此时我们可以使用 check table来检查表及其对应的索引, check table语句能够检查InnoDB和MyISAM类型的表,对于MyISAM类型的表,check table语句还会更新关键字统计信息,而且check table也可以检查视图的错误,比如在视图中定义的表不存在了 语法: check table table_name [,table_name] [option] option={quick | fast | medium | extended | changed } quick: 不扫描行,不检查错误的连接 fast: 只检查没有正确关闭的表 changed: 只检查上次检查后的被更改的表和没有正确关闭的表 medium: 扫描行,以验证被删除的连接是有效的,也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。 extended: 对每行的所有关键字进行一个全面的关键字查找,可以确保表是100%一致的,但花费时间较长。 注意: option 只对MyISAM类型表有效,对InnoDB表无效,而且check table在执行过程中也会给表添加只读锁3. 优化表 optimize table
mysql使用optimize table 语句来优化表,该语句对InnoDB和MyISAM类型的表都有效,但是该语句只能优化表中的varchar, blob或text类型的字段 optimize [local | no_write_to_binlog] table table_namelocal是 no_write_to_binlog的同义词,意思是不写入二进制日志,该操作也会读表添加只读锁。
参考:https://blog.csdn.net/aichogn/article/details/118147498
google账号如何更改地区与国家?
为啥我的安卓手机chatgpt app打开报错Something went wrong. You may be connected to a disallowed ISP. If you are us
c#如何修改windows的代理设置?
国内华为andriod安卓苹果ios手机如何使用chatgpt4o的app?
win10中怎么让bat批处理文件打开和关闭代理服务?
win10中怎么让bat批处理文件运行完成后不关闭窗口?
docker启动容器后如何挂载宿主文件并执行命令?
有没有lnmp的docker镜像?
何为超级以太网联盟(UEC)?
如何用go语言写一个加密的socks5代理通讯?