mysql分表

垂直分表:

其实没啥好讲,就是 主键+常用列 放在原表中,再讲 主键+一些不常用列 放在另外的表中。
  这样一个数据页就可以存放更多数据。 但是缺点也明显,可能会增加join 或 union之类的操作。

水平分表:

原则:具体情况具体分析。
  常见几种分法:
    1、按时间分
      典型应用:新闻类、qq状态、朋友圈动态等关注实时或最近的,可以用时间划分,比如当月一张表,上个月一张表。
    2、按区间分
    通常每张表都会有个自增id,可以利用自增id分,比如
     user1表 是1~50
     user2表 是51~100 //insert 操作完成后,判断id值,超过50时,创建新表
    3、hash分表
      实质上没啥意思,对每一条插入的数据进行取模, 对于单挑记录查询还ok,如果查询相邻几行数据时,就悲剧了。 感兴趣的同学可以看下面相关链接第一条。
  分表后查询:
    1、对于时间水平分表:
      假设朋友圈状态表,每天都会产生20w条记录, 建表 table_20150401 存放。然后用cron跑一个脚本,每天晚上凌晨创建新表,比如 table_20150402。在php程中
     执行插入的函数进行封装,使用下面这两个函数。 
   2、对于id区间划分
    新闻或朋友圈状态id 1~1000 1001~2000
一、数据库里面建表 breakup_table //这个表里专门记录,新分表和原表的 记录数,方便确定查找哪个表
    比如: news_1 1 //起始key为1
      news_2 1001 //起始key为1001
      news_3 2001
   二、上述 news_1 之类的数据,第一次需要同数据库拿,之后可以放到session或memcached里面
   hash 分表也可用于id区间分表,即用id值 取模。

水平分表,典型缺点,对于group by或order by之类的查询是灾难。

场景案例:

博客系统

垂直分割:

文章标题,作者,分类,创建时间等,是变化频率慢,查询次数多,而且最好有很好的实时性的数据,我们把它叫做冷数据。
    而博客的浏览量,回复数等,类似的统计信息,或者别的变化频率比较高的数据,我们把它叫做活跃数据。
    所以,在进行数据库结构设计的时候,就应该考虑分表,首先是纵向分表的处理。
    这样纵向分表后:
      首先存储引擎的使用不同,冷数据使用MyIsam 可以有更好的查询数据。活跃数据,可以使用Innodb ,可以有更好的更新速度。
      其次,对冷数据进行更多的从库配置,因为更多的操作是查询,这样来加快查询速度。对热数据,可以相对有更多的主库的横向分表处理。
      其实,对于一些特殊的活跃数据,也可以考虑使用memcache ,redis之类的缓存,等累计到一定量再去更新数据库.

水平分割:

当博客的量达到很大时候,就应该采取横向分割来降低每个单表的压力,来提升性能。
    例如博客的冷数据表,假如分为100个表,当同时有100万个用户在浏览时,如果是单表的话,会进行100万次请求,而现在分表后,就可能是每个表进行1万个数据的请求(因为,不可能绝对的平均,只是假设),这样压力就降低了很多很多。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值