optimize table的一个小问题

今天看《高性能mysql》一书时,看到optimize table的命令可以重新组织表,就本地测试了下,执行结果如下:

mysql> optimize table psendohash;

+---------------------+----------+----------+-------------------------------------------------------------------+

| Table               | Op       | Msg_type | Msg_text                                                          |

+---------------------+----------+----------+-------------------------------------------------------------------+

| yangjing.psendohash | optimize | note     | Table does not support optimize, doing recreate + analyze instead |

| yangjing.psendohash | optimize | status   | OK                                                                |

+---------------------+----------+----------+-------------------------------------------------------------------+

2 rows in set (0.38 sec)

==============================

Table does not support optimize, doing recreate + analyze instead

为什么我的这个表不支持优化呢?

百度了一下,原来我这个表是innodb表,如下

mysql> show create table psendohash\G

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

Table: psendohash

Create Table: CREATE TABLE `psendohash` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`url` varchar(255) NOT NULL,

`url_crc` int(10) unsigned NOT NULL DEFAULT ‘0‘,

`common` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `ind_crc` (`url_crc`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

======================================================

innodb表如果想要重新组织一下表,可以使用下面的命令

mysql> alter table psendohash engine=‘InnoDB‘;

这样就可以整理表的一些碎片信息了。

时间: 2024-08-22 16:59:30

optimize table的一个小问题的相关文章

mysql的optimize table命令

在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这表表的数据文件和索引文件却奇怪的没有变小.这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变.这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在.这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率. mysql提供了解决这一个问题的方法:optimize table table_name 命令.该

OPTIMIZE TABLE

INNODB 不支持 mysql> OPTIMIZE TABLE t; +--------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +--------+----------+----------+--------------------------------------------

optimize table tablename

optimize 优化表OPTIMIZE 命令支持的引擎MyIsam, InnoDB, ARCHVE当对表有大量的增删改操作时,需要用optimize对表进行优化,可以减少空间与提高I/O性能,命令optimize table tablename; 1.假如有session表且存储引擎为MyISAMmysql> OPTIMIZE TABLE session;+--------------+----------+----------+----------+| Table | Op | Msg_ty

optimize table在优化mysql时很重要

一个表的数据量有1000W条,那么查看这么表占据的硬盘空间时会发现,数据本身是300M,索引是200M 这个时候,删除掉500W条数据,这个时候数据本身150M,而索引还是200M左右 你删除数据时,mysql并不会回收,被已删除数据的占据的存储空间,以及索引位. 而是空在那里,而是等待新的数据来弥补这个空缺,这样就有一个缺少,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了. 所以对于写比较频烦的表,要定期进行optimize,一个月一次,看实际情况而定了. optimize tab

关于sql优化的一个小总结

1.数据量大的时候,可以分多次查询2.有些数据的存储可以分主次表,此表存一些不常用的数据3.union all 比union效率要高4.尽量不要用distinct5.不返回不需要的行和列6.根据条件加索引7.可以把like用法换成截取字符串作比较8.检索的时候可以把页数也当做条件(每次查询拿出最大的id),加载下一页的时候从最大的id开始9.尽量不要临时表,table变量,子查询.case等10.用profiler来跟踪查询,得出查询所需时间,找出sql问题所在11.视图尽量少用12.没必要时不

关于存诸过程临时表的一个小运用

USE [szmj] GO /****** Object: StoredProcedure [dbo].[Par_ProductDownLoad] Script Date: 05/26/2014 17:46:32 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create

.net: 不能忽视的break——寻找VS2010和VS2012编译器的一个小区别

文中的问题来自于实际开发,但是实际开发中的代码逻辑比较复杂,因此下面的代码去掉了所有逻辑,只保留能体现问题的代码,类和都只为了说明问题,并不具有实际意义.下面首先看看下面的代码和现象. 1. 问题再现 下面的代码重现了场景, 看完这段代码是不有任何问题吗?下面看看输出结果. 1 public class IL 2 { 3 public List<InstanceOne> _instances = new List<InstanceOne>(); 4 public InstanceO

iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 例如以下图示[美团和大众点评]: 实现分类控件功能的思路: 1.实现collection v

mysql中OPTIMIZE TABLE的作用及使用

来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE.被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置.您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理