SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
有一个大数据表,有30个字段,
int
varchar
text
字段都有,1000W+数据,每天都会增加,经常搜索的字段有10个,这个怎么优化?
请教了一个人,才得到差不多的答案,感觉这种问题有点假,现实中基本不会出这种问题吧?
优化方案:
主从同步+读写分离:
这个表在有设备条件的情况下,读写分离,这样能减少很多压力,而且数据稳定性也能提高
纵向分表:
根据原则,每个表最多不要超过5个索引,纵向拆分字段,将部分字段拆到一个新表
通常我们按以下原则进行垂直拆分:(先区分这个表中的冷热数据字段)
把不常用的字段单独放在一张表;
把text
,blob
等大字段拆分出来放在附表中;
经常组合查询的列放在一张表中;
缺点是:很多逻辑需要重写,带来很大的工作量。
利用表分区:
这个是推荐的一个解决方案,不会带来重写逻辑等,可以根据时间来进行表分区,相当于在同一个磁盘上,表的数据存在不同的文件夹内,能够极大的提高查询速度。
横向分表:
1000W条数据不少的,会带来一些运维压力,备份的时候,单表备份所需时间会很长,所以可以根据服务器硬件条件进行水平分表,每个表有多少数据为准。
有不好的地方,请指点一下,谢谢。
以上就是介绍几种Mysql多字段大表的优化方法的详细内容,更多请关注php中文网其它相关文章!
学习教程快速掌握从入门到精通的SQL知识。
关键词:介绍几种Mysql多字段大表的优化办法