几个缩减MySQL以节省磁盘空间的建议

几个缩减MySQL以节省磁盘空间的建议,第1张

我们在工作中时常会遇到一些客户的TPS\QPS都不太高,但磁盘占用非常大,一旦单实例空间太大,像内存、网络、CPU以及备份都将增加相应的开销。可能仅仅是由于空间不满足使得我们不得不进行扩容,下面的方法提供给大家参考。有则改之无则加勉。

1、表结构设计上

1)

字符集是否遵循了最小化原则?(能用latin的就不用gbk。能用gbk的就不用utf8)

2)

索引上是否有滥用?(根本不使用的字段索引、不适合建索引的字段建索引、重复建索引或者不能很好的利用前缀索引等)

3)

冗余字段是否太多?(各表中不用的或者字段冗余太多)

4)

不正确的字段类型?(能用1个字节非要用几个字节,像枚举类、状态类比较常见)

5)

将较长的字段或者几个字段组合做为主键?(主键最好用mysql自增)

具体事例如下:

CREATE

TABLE

`class_meta`

(

`class_name`

varchar(128)

NOT

NULL

COMMENT

'类名',

`class_desc`

varchar(2048)

default

''

COMMENT

'类的描述',

`class_status`

char(20)

default

'test1'

COMMENT

'test1,test2',

PRIMARY

KEY

(`class_name`),

UNIQUE

KEY

`cm_cn_uk`

(`class_name`),

KEY

`cm_cd_ind`

(`class_desc`(767)),

KEY

`cm_cs_ind`

(`class_status`),

KEY

`cm_cdcn_ind`

(`class_desc`(767),`class_name`)

)

ENGINE=InnoDB

DEFAULT

CHARSET=latin1

COMMENT='meta信息'

通过上面的表结构能看到如下地方不合适

1、主键与唯一索引明显重复,索引cm_cd_ind与索引cm_cdcn_ind索引重复(这种情况经常出现,大家留意下)

2、cm_cs_ind如果两个状态分布均匀也明显不合适建索引

3、class_desc由于是描述性质的,也不合适建索引

4、最好以自增做为主键,可以减少整表的空间

5、class_status列明显可以用tinyint来存,可以省下19个字节

2、存储内容上

1)

是否将图片、视频、音乐等大数据存储在表中?(表里最好只保留路径而不是实际的文件内容)

3、数据保留上

1)是否有已过期而未删除的数据?(对于无效数据及时清理或者进行历史归档)

4、后期维护上

1)是否对经常删除的表进行维护(optimize

table)

建议:

1、在性能要求不高的case中(并发不太高),可以考虑使用压缩表。一般压缩率在30%-70%之间,收益非常可观。

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

3、在表结构设计上,一定要发扬“斤斤计较”的精神,能用1个字节表示的坚决不用2个字节。

4、尽量减少大字段的使用。

ps:经常在跟开发评审表结构的时候,时常会被笑话说DBA太抠门,一点都不大气。当数据量小的时候可能大家不觉得,但当你的数据级到T或者P的时候,哪怕多省几个字节都是非常可观的,给大家简单算笔账,如果我们将一张5亿条记录的表,字段从100个字节降到60个字节(应该很容易做到吧),那么不算上索引将节约大约18G的空间。

这个解决起来很麻烦,不过有解决途径:在原数据库里面导出SQL语句;找出符合现在低版本的SQL语句代码;然后在代版本中运行相关的SQL语句就OK了,、毕竟他们都是MYSQL都支持MYSQL语句,只是有一些语法上面的区别而已。

MySQL免安装版与安装版区别为:软件形式不同、配置不同、存储不同。

一、软件形式不同

1、MySQL免安装版:MySQL免安装版的软件形式为压缩包,解压后即可使用。

2、MySQL安装版:MySQL安装版的软件形式为安装包,安装成功后才可使用。

二、配置不同

1、MySQL免安装版:MySQL免安装版不需要在使用前配置软件的环境变量。

2、MySQL安装版:MySQL安装版需要在使用前配置软件的环境变量。

三、存储不同

1、MySQL免安装版:MySQL免安装版的数据存储,默认在当前解压文件夹下。

2、MySQL安装版:MySQL安装版的数据存储,默认在电脑安装目录文件下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7601654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存