华体会-文班评历史最佳5人组:库里、乔丹、詹姆斯、邓肯、奥尼尔

admin 2025-07-29 阅读:4 评论:0
  导读   之前分享过,表分区数量特别大,当有大事务时,可能会导致主从延迟特别严重。  那么如何减少表分区数量呢?  之前叶师傅分享的 意想不到的MySQL复制延迟原因一文中提到,规避问题的方法有:删除不用的历史表分区;将大表拆分;将大事...

  导读

  之前分享过,表分区数量特别大,当有大事务时,可能会导致主从延迟特别严重。

  那么如何减少表分区数量呢?

  之前叶师傅分享的 意想不到的MySQL复制延迟原因一文中提到,规避问题的方法有:

删除不用的历史表分区;

将大表拆分;

将大事务拆分,不要在一个事务里做大批量更新;

  针对第一条方法,今天我们来讲讲怎么做表分区的合并,也就是把历史表分区合并到一起。

  首先,检查下哪些表的分区数量最大,优先对它们下手:

  yejr@imysql.com[information_schema]> SELECT TABLE_NAME, COUNT(*) AS CNT FROM PARTITIONS WHERE PARTITION_NAME IS NOT NULL GROUP BY TABLE_NAME ORDER BY CNT DESC LIMIT 50;+------------+-----+| TABLE_NAME | CNT |+------------+-----+| t1 | 600 |...+------------+-----+

文班评历史最佳5人组:库里、乔丹、詹姆斯、邓肯、奥尼尔

  可以看到表 t1 的分区共有 600 个之多。

  再来看看这个表的分区情况:

  

  再看看这个表各个分区的数据量分布:

  

  每天就要生成700-800万行数据,这个量是够大的了。

  现在,我们把2016年的所有分区,按照每月一个分区(之前是每天一个分区),合并在一起。

  yejr@imysql.com[mydb]> ALTER TABLE t1 REORGANIZE PARTITION p20160101,p20160102...p20160131 into ( partition p201601 VALUES LESS THAN ('2016-01-31'));

  Query OK, 0 rows affected (9 hours 56 min 55.33 sec)Records: 0 Duplicates: 0 Warnings: 0

  苍天啊,竟然要跑9个多小时,好可怕。

  合并完分区后,还记得要执行 ANALYZE TABLE 哟,及时更新统计信息。在有大量表分区的情况下,执行 ANALYZE TABLE 可能会略慢,要有耐心,在另一篇分享 细说ANALYZE TABLE文中也介绍过了。

  我们可以用下面方法构造批量执行表分区合并的SQL指令:

  yejr@imysql.com[information_schema]> SELECT TABLE_NAME, CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.' ,TABLE_NAME, ' REORGANIZE PARTITION ', GROUP_CONCAT(PARTITION_NAME), ' INTO (PARTITION P2017 VALUES LESS THAN (''2018-01-01''));') FROM PARTITIONS WHERE PARTITION_NAME IS NOT NULL GROUP BY TABLE_SCHEMA, TABLE_NAME;

  SQL中的条件请自行替换。

  当然,除了合并分区,我们还可以利用MySQL 5.7支持 分区 & 物理表 直接交换 的新特性,将历史分区交换到外部物理表,再归档到历史库里。这个方案对在线数据库影响很小,叶师傅优先推荐此法。

  yejr@imysql.com[mydb]> ALTER TABLE t1 EXCHANGE PARTITION p20160101 WITH TABLE t1_20160101;

  备注:一个分区只能交换到一个外部物理表中,不能将多个分区交换到同一个表。

  最后,如果哪天boss抽风要求把原来的分区打散,重新变成每天一个分区,咋整呢?

文班评历史最佳5人组:库里、乔丹、詹姆斯、邓肯、奥尼尔

  其实也不难啊,让叶师傅手把手地教你

  yejr@imysql.com[mydb]> ALTER TABLE t1 REORGANIZE PARTITION p201707 INTO (partition p20170701 VALUES LESS THAN ('2017-07-02’) , partition p20170702 VALUES LESS THAN ('2017-07-03’) ,... partition p20170731 VALUES LESS THAN ('2017-08-01’));

  最后祝大家的表分区越来越多,嘿,别打我,快溜~

知识无界限,不再加原创

喜欢就转走,铁粉加密圈

https://yejinrong.com

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • 华体会官网-欧洲足坛龙争虎斗,实力对比赛事争分夺秒的简单介绍

    华体会官网-欧洲足坛龙争虎斗,实力对比赛事争分夺秒的简单介绍
    在1951年的拉丁杯决赛历史中,瑞典传奇射手努达尔在AC米兰对阵法甲冠军里尔的比赛中,凭借在第3257和67分钟的精彩表现,上演了帽子戏法,帮助球队以50的巨大优势获胜这个比分不仅创造了拉丁杯决赛纪录,还让努达尔成为首位在决赛中完成帽子戏法的球员,展现了他在那个赛季的卓越状态拉丁杯自1949年首。...
  • 华体会-荷兰退役名宿现身球场,为球队助威

    华体会-荷兰退役名宿现身球场,为球队助威
    不用买门票的情况首先不用买门票的就是在现场采访的记者和摄影师,这些人其实也可以算作是球队邀请的,每一场比赛球队都会给记者和摄影师留下一定的区域,这些人进入球场只需要凭借工作证就可以,这是不需要花钱买门票的其次不用买门票的就是现场的工作者,比如球场的安保人员球童等等另外球队的;首先就是名人堂控卫球员基德,曾经在NBA球场征战19年的基德,他在2013年正式宣布退役而退役之后基德立马成为篮网队的主教练,执教篮网队1个赛季之后,基德则是来到了雄鹿队,他累计在雄鹿队执教4个赛季不过在...
  • 华体会登入-布莱顿斗志昂扬,奋力冲击联赛前列的简单介绍

    华体会登入-布莱顿斗志昂扬,奋力冲击联赛前列的简单介绍
    实际上,英格兰球迷并不完全认同这首歌曲,一支并不出名的小乐队布莱顿在早前也推出了自己的歌曲为摩尔凯旋,歌曲中的“摩尔”是指率领英格兰队勇夺1966世界杯冠军的队长鲍比·摩尔,而布莱顿乐队只是歌曲的作曲者,作词为一位曾亲眼见证摩尔带队夺冠时刻的老球迷,他把自己当时看见的一切和感受都用真切的词语表达出来。...
  • 华体会首页-队内矛盾导致球队表现下滑,教练面临考验的简单介绍

    华体会首页-队内矛盾导致球队表现下滑,教练面临考验的简单介绍
    在竞技体育中,成绩的好坏往往能揭示出队伍内部的种种问题当成绩优秀时,球队内部往往呈现出一种团结和谐的氛围,许多问题都被表面的胜利所掩盖然而,一旦成绩下滑,内部的问题便如潮水般涌现,尤其是团队的凝聚力与协作能力,往往成为首当其冲的考验以职业体育为例,当球队表现不佳时,解雇教练似乎。 二队内矛盾急需解决上赛季开始前,海港队在热身赛中表现很差,引起了各界的议论当时就有人提出,海港队表现糟糕的重要原因就是队伍里老队员对于薪资不满,尤其是受疫情影响后,球队的贸然降薪,彻底激化了队内矛盾...
  • 华体会官网入口-小牛队宣布签约新外援,目标增强阵容深度的简单介绍

    华体会官网入口-小牛队宣布签约新外援,目标增强阵容深度的简单介绍
    1、辽宁队主帅杨鸣在战胜江苏队的赛后采访中表示,球队目前还没有签约新外援,虽然杨鸣后面还说了三个字“看,观察”,这并不代表辽宁队肯定会签约威尔森威尔森对于辽宁来说,真的会起到作用吗 据媒体爆料威尔森的价格很低,只有35万美金,这和其他外援上百万美金的年薪相比,确实是很便宜了,说是白菜价;小外援依然是哈德森,而大外援则换成了布兰登·巴斯巴斯,1985年4月30日出生于美国路易斯安那州,2005年通过选秀进入NBA,先后效力于新奥尔良黄蜂小牛魔术凯尔特人湖人和快船等球队2017年...