请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

mysql数据库分区表

老师您好,我的业务中有一个大表(600W),该表只有最近的几个月是热数据,使用的是mysql5.6,现在想对该表进行分区,有以下几点疑问

  1. 分区键想使用日期类型datetime的列,是否需要对该列进行转化成date?
  2. 对于分区表来说,如果不走分区键,是否会出现全表锁?
  3. 对于分区表进行表关联的时候,有什么需要注意的地方?
  4. 对于分区有什么建议?或推荐的工具?

正在回答

1回答

  1. 可以进行转换并在该列上加索引。

  2. 如果不走分区建不会锁全表,但是会扫描所有分区,这样性能很差

  3. 最好在并联条件中包括分区建

  4. 谨慎使用分区表,在上线前多做性能测试,如果只有少数热数据可以进行持续归档,把冷数据物理的移动到归档表中。

0 回复 有任何疑惑可以回复我~
  • 提问者 sherlock陈 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-03-24 16:37:39
  • 提问者 sherlock陈 #2
    1. 老师能否详细讲一下持续归档操作?是通过定时事务调用存储过程实现吗?
    2. 使用datetime类型列做分区键时,需要提前将该键作为主键的一部分,接下来是否需要对该列追加索引吗?会与之前定义的部分主键重复而造成索引冗余吗?
    3. 如果我对大表,在每个月的15号动态的添加下一个月的分区,然后删除最旧的一个分区,能否评估下这种操作有什么影响或建议?
    4. 一般的数据备份都是怎么计划的?是定期执行mysqldump吗?
    回复 有任何疑惑可以回复我~ 2020-03-24 17:01:22
  • sqlercn 回复 提问者 sherlock陈 #3
    1.可以自己写脚本,存储过程或是使用pt_archive程序来实现
    2.innodb表只能有一个主键,你这种情况只能用联合主键,这可能会降低表的性能
    3.最好是在业务低峰期进行操作,另外注意备份好要删除的数据
    4.一般是用xtrabackup这样的程序进行物理备份。
    回复 有任何疑惑可以回复我~ 2020-03-24 17:08:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信