正常情况下的分表,都是直接创建多个相同结构的表,比如table_1、table_2...最近碰到一个特殊需求,需要创建一个主表,所有分表的数据增删改查,全部自动实时更新到主表,这个时候可以使用MRG_MyISAM引擎了。

  首先创建主表`mygame_message_log`。然后创建分表(必须使用MyISAM引擎):

create table `mygame_message_log_1` LIKE `mygame_message_log`;
create table `mygame_message_log_2` LIKE `mygame_message_log`;
create table `mygame_message_log_3` LIKE `mygame_message_log`;
create table `mygame_message_log_4` LIKE `mygame_message_log`;
create table `mygame_message_log_5` LIKE `mygame_message_log`;
create table `mygame_message_log_6` LIKE `mygame_message_log`;
create table `mygame_message_log_7` LIKE `mygame_message_log`;
create table `mygame_message_log_8` LIKE `mygame_message_log`;
create table `mygame_message_log_9` LIKE `mygame_message_log`;
create table `mygame_message_log_10` LIKE `mygame_message_log`;
create table `mygame_message_log_11` LIKE `mygame_message_log`;
create table `mygame_message_log_12` LIKE `mygame_message_log`;
create table `mygame_message_log_13` LIKE `mygame_message_log`;
create table `mygame_message_log_14` LIKE `mygame_message_log`;
create table `mygame_message_log_15` LIKE `mygame_message_log`;
create table `mygame_message_log_16` LIKE `mygame_message_log`;
create table `mygame_message_log_17` LIKE `mygame_message_log`;
create table `mygame_message_log_18` LIKE `mygame_message_log`;
create table `mygame_message_log_19` LIKE `mygame_message_log`;
create table `mygame_message_log_20` LIKE `mygame_message_log`;

  

  然后将主表关联到分表:

ALTER TABLE mygame_message_log ENGINE = MERGE UNION=(mygame_message_log_1,mygame_message_log_2,mygame_message_log_3,mygame_message_log_4,mygame_message_log_5,mygame_message_log_6,mygame_message_log_7,mygame_message_log_8,mygame_message_log_9,mygame_message_log_10,mygame_message_log_11,mygame_message_log_12,mygame_message_log_13,mygame_message_log_14,mygame_message_log_15,mygame_message_log_16,mygame_message_log_17,mygame_message_log_18,mygame_message_log_19,mygame_message_log_20) INSERT_METHOD=no AUTO_INCREMENT=1;

  

  需要注意的是,表的主键不能设为自增,所有表的结构全部要一致。

  同时这种方法会有一个缺陷,就是一旦要修改表结构,就会很麻烦。千万不能直接修改!

  最好开始就将表设计考虑周到一点,如果实在要修改,可按如下步骤:

  1、删除主表;

  2、针对所有分表修改相应的字段;

  3、重新创建一个主表:

  

create table `mygame_message_log` LIKE `mygame_message_log_1`;

  4、给主表做关联:

ALTER TABLE mygame_message_log ENGINE = MERGE UNION=(mygame_message_log_1,mygame_message_log_2,mygame_message_log_3,mygame_message_log_4,mygame_message_log_5,mygame_message_log_6,mygame_message_log_7,mygame_message_log_8,mygame_message_log_9,mygame_message_log_10,mygame_message_log_11,mygame_message_log_12,mygame_message_log_13,mygame_message_log_14,mygame_message_log_15,mygame_message_log_16,mygame_message_log_17,mygame_message_log_18,mygame_message_log_19,mygame_message_log_20) INSERT_METHOD=no AUTO_INCREMENT=1;

  5、成功,原来主表的数据都恢复了

转载于:https://www.cnblogs.com/qf19910623/p/5534143.html

基于MRG_MyISAM引擎的Mysql分表相关推荐

  1. 总结下Mysql分表分库的策略及应用

    上月前面试某公司,对于mysql分表的思路,当时简要的说了下hash算法分表,以及discuz分表的思路, 但是对于新增数据自增id存放的设计思想回答的不是很好(笔试+面试整个过程算是OK过了,因与个 ...

  2. mysql分表那些事儿

    从前不太喜欢发博客,觉得太繁杂,感觉平时的工作开发就已经够忙的了,所以很多时候心里想写,但是行动不允许.最近因为工作也还轻松,因此有时间来整理一下自己之前用到过的和了解的一些东西.今天来说说mysql ...

  3. mysql 主表存hash和子表的名字_【mysql】mysql分表和表分区详解

    为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...

  4. mysql —— 分表分区

    面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗? 答案是肯定的,一个表的总记录超过1000W,在操作系统层面检索也是效率非常低的 解决方案: 目前针对海量 ...

  5. mysql分表存储_MySQL 分表存储的使用示例

    分表存储是把记录保存在不同的表表会一个关联了在这里我们来看一篇关于MySQL 分表存储的使用示例,具体的例子如下文介绍. 一般我们项目中如果数据量特别大的话通常会考虑将某一表数据进行分表处理,例如:我 ...

  6. MySQL分表后,如何做分页查询?

    MySQL分表方式分为垂直分表和水平分表,这两种分表形式都比较简单,简单理解垂直分表指的是:表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降低了性能.这时需要把大 ...

  7. mysql分表的3种方法

    参考:https://blog.csdn.net/czh500/article/details/89735492 一,先说一下为什么要分表 一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联 ...

  8. 一、mysql分表简单介绍

    一.Mysql分表的原因 1.当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了. 分表的目的就在于此,减小数据库的负担,缩短查询时间. 2.mysql中 ...

  9. mysql分表规则(转)

    author:skate time:2013/05/14 Mysql分表准则 在大量使用mysql时,数据量大.高访问时,为了提高性能需要分表处理,简介下mysql分表的标准,后续会继续补充 环境: ...

  10. 关于MySQL分表操作的研究

    关于MySQL分表操作的研究 一般来说,当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了,这次我来详细说说分表的一些方法.首先,我们需要想好到底分多少个表,前提当然是满足应用.这里 ...

最新文章

  1. html怎么写三段平行文本,试论实用文体翻译中平行文本的使用
  2. Catch a cold, will be back later
  3. python-assert
  4. ZooKeeper学习第七期--ZooKeeper一致性原理
  5. 移动端日期选择插件rolldate
  6. Django中的路由分发
  7. 大数据_Spark框架_快速上手_word count 案例分析---Spark工作笔记0005
  8. 计算机学习路线推荐(初稿)
  9. android官方升级包下载安装,安卓7.0正式版安装包下载
  10. 软件体系结构第三章作业
  11. C语言差分双向码编码,基于c语言的数字基带信号码型变换系统设计1.doc
  12. [INS-40719]IP address configured for Single Client Access Name(SCAN):test-pdb.xxxxxx is already assi
  13. keep practicing for fast tying
  14. 三种方法破解系统管理员密码
  15. 如何去除图片上的文字(PS使用教程)
  16. 1982年版《茶馆》内容简要回顾
  17. 短视频怎么获得高流量?简单小技巧,让你的短视频被更多人看到
  18. Sharding JDBC-读写分离
  19. 【Qt OpenGL教程】14:轮廓字体
  20. 工作邦智慧水务公众号系统

热门文章

  1. python基础之字典、集合
  2. P1020 导弹拦截 dp 树状数组维护最长升序列
  3. @link标签 实现注释里面的类跳转
  4. JZOJ5787轨道(容斥+DP)
  5. 表格 滚动条 (tbody部分滚动)
  6. C4D结合AE制作酷炫MG光影动画心得
  7. Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解
  8. (cocos2dx-3.3)3D坐标系
  9. Objective-C内存管理
  10. ios开发之触摸时间处理