前文唠叨几句
近几年随着互联网的发展,越来越多的人用上智能手机,我们的父母现在会上网买东西了。所以对于软件开发,面临着大数据量处理的问题。
公司最常用的关系型数据库应该就是mysql了。所以今天总结下mysql大表带来的问题,以及解决方式。
一 . 大表的定义
mysql大表,这里的“大表”就比较广义了。那么多大才能算是大表呢?
1.一般指得是单表行数达到千万级别
2.表数据文件巨大,至少10个G
当然这些也是相对的定义,具体还要看你的磁盘IO和业务场景来定义。
二. 大表带来的问题和结局办法
1.产生慢查询
很难在一定的时间内过滤出所需要的数据,查询过大表的小伙伴应该深有体会。可能查询直接卡死,一直查询不出来数据。
解决方案:优化SQL(这不废话嘛。别着急接着往下看,一步步给你下套)
2.建立索引会产生锁表,或者时间很长
mysql版本 <5.5 建立索引会锁表
mysql版本 >=5.5不会锁表但会引起主从延迟
3.修改表结构需要长时间锁表
会造成长时间的主从延迟,因为如果是主从结构,那么都是现在主库完成DDL操作,再去完成相同的操作。
解决方案:
(1)分库分表
难点:分库分表其实不是一件容易的事情,如果公司领导让你一个人处理分库分表,那可能真的是比较看中你的能力了。分库分表难点主要是,分表主键的选择。比如订单表很大了,这时候想分表了。那么主键可以选择订单号等等。还有一个难点时候分表后跨分区数据查询。
(2)历史数据归档
难点:
第一个归档时间的选择。第二个是如何进行归档操作。
接下来还会更新关于mysql知识的相关文章