减少MySQL节省磁盘空间的几点建议

在我们的工作中,我们经常会遇到一些客户的TPS QPS不是很高,但硬盘的使用是非常大的。一旦单个实例空间过大,如内存、网络、CPU和备份都会增加相应的成本。也许只是因为空间不够满足,使我们不得不扩展,下面的方法为您提供参考。纠正错误。

1。表格结构设计

1)该字符集是否遵循最小化原则(拉丁可不使用gbk.utf8可以使用GBK。)

2)指数有误吗(未使用的字段的索引,索引的字段索引,建立索引或索引,重复前缀不能使用)

3)冗余字段太多了吗(不在每个表中使用或在字段中冗余太多)

4)不正确的字段类型(这是更常见的1字节,使用几个字节像枚举成员,国家级)。

5)将长字段或两个字段组合成主键(主密钥最好用mysql增加)

具体例子如下:




创建表(` class_meta `
` class_name ` varchar(128)不为空的评论类名,
所描述的` class_desc ` varchar(2048)默认的'评论'类',
` class_status ` char(20)default'test1'comment'test1,test2,
主键(` class_name `),
独特的关键` cm_cn_uk `(` class_name `),
关键` cm_cd_ind `(` class_desc `(767)),
关键` cm_cs_ind `(` class_status `),
关键` cm_cdcn_ind `(` class_desc `(767),` class_name `)
)发动机= InnoDB默认的字符集latin1评论= 'meta信息;



上述表结构可以被视为不适合下列地方

1、主键和唯一索引显然是重复的,和指数cm_cd_ind重复与指数cm_cdcn_ind指数(这是经常的事,每个人都关注)

2、cm_cs_ind如果两态均匀分布明显不恰当的索引

3、class_desc索引是不适合的因为它是描述性的。

4,最好是以自增为主,减少整个表的空间。

5、class_status柱可以明显节约与字段,19字节可以保存

2。存储内容

1)存储在表格中的图片、视频、音乐和其他大数据吗(保持路径的最佳方式,而不是实际的文件内容)

三.数据保留

1)有数据已过期,删除(清除无效数据在时间或归档历史)

4、后期维护

1)是否维护定期删除的表(优化表)

建议:

1。在性能要求低(不太高)的情况下,可以考虑使用压缩表,一般压缩率在30%到70%之间,利润非常可观。

2,删除非常频繁的表,进行定期优化,减少表中的碎片。提高查询和写入的性能。

3,在表结构的设计中,我们必须发扬重量的精神,可以使用1字节而不需要2字节。

4,尽量减少大面积的使用。

PS:经常与开发评审表结构,往往将一个笑话,DBA太小气,没有一点气氛。当少量的我们可能感觉不到数据,但是当你的数据水平T或P,甚至几个字节是非常可观的,给你一个简单的计数,如果我们把5亿条记录的表字段从100字节到60字节(这应该很容易做到),所以不要指望指数将节省约18g空间。