`
冰糖葫芦
  • 浏览: 293923 次
社区版块
存档分类
最新评论

mysql Merge引擎

阅读更多
若可以使用表分区,应首选表分区而不是使用merge来分表。
1.也叫MRG_MyISAM,merge引擎使用示例:
2.目前(2015-11-05)merge引擎所关联的表只能是MyISAM引擎,不能是Innodb引擎
3.在merge table上是用drop table时只是影响的merge table并不影响被关联表如(t1,t2)
4.创建merge表必须要有UNION=(list-of-tables)语句
 insert_method为可选参数,取值为last,first,no  其中last为插入到union中的最后一张表,first为插入到第一张表,no表示merge表不可插入若强行执行插入会报错
5.merge表所依赖的各个表的主键在merge表中会被索引但不是主键索引(唯一索引同理)
6.修改merge表所依赖的表有两种方式:
  a.删除merge表并重新创建
  b.alter table merge_table union=(t1,t2,...);
7.union中所有表的结构和索引必须严格一致,但这个一致性检查是在打开merge表的时候进行检查,而不是在创建的时候检查;
  其中列的一致性要求如下:
  a.union中的表和merge表必须column名称、个数一致
  b.对应列类型必须完全相同
  c.对应列长度定义必须完全相同
  d.union中表的列可以为null
  索引一致性要求如下:
  a.union中表的索引可以大于等于merge表的索引,但不能少于merge表的索引
  b.union中表的索引类型必须和merge表中的索引类型一致
  c.对于复合索引,union中各个表索引中的列必须和merge表中索引列完全相同
  d.各个部分索引中的索引长度、语言必须完全一致;是否为空也必须一致
8.merge表使用有问题,使用 check table语句可以找到问题。
 
使用场景及优缺点
优点:
1.可以很容易管理一组日志表。
  比如可以将日志表按不同月份放到不同的表中,再用myisampack压缩,然后再用merge来接起来做一个表使用。
2.速度更快。
  对于只读大表来说可以将其拆分为多个子表并存放在不同的硬盘上,再通过merge表将其合为一个逻辑表。
3.查询性能高。
  对于已经明确查询的数据可以从merge所依赖的单个表查询,对于其他的查询则可以使用merge来进行(即既可以从子表单独查询又可以从merge表查询)。
  可以创建多个merge表并且多个merge表可以依赖同一张表。
4.更容易维护、修复。
  如果一个大表不拆分,则修复起来非常困难;若将大表拆分为多个小的子表,则这些子表因为比较小所以修复起来也容易。
5.快速整合多个表。
  由于merge表使用的是各个子表的索引,所以它不需要维护索引,这样创建merge表就非常快。(但是在创建表的时候仍需指定索引,但是该索引并不会被创建)
6.如果将多个子表合并为一个大表,则使用merge会节省一大部分磁盘空间。
7.文件大小限制
  单张MyISAM表大小受限于操作系统单个文件大小,但是使用merge可以使用多个MyISAM表
8.为表创建别名
  也可以在merge表中union语句中只指定一张表来为Myisam表创建别名,并且对性能影响非常小(只是在读的时候会多一些间接调用和  memcpy()调用
缺点:
1.merge表中只能是myisam表
2.并不是所有的myisam表特性都能在merge表中使用。
  如:merge表不支持full-text全文索引
3.如果merge表是非临时表(临时表:create temporary table ...),则所依赖表都不能是临时表;如果merge表是临时表,则依赖表既可以是临时表也可以是非临时表。
4.使用的文件描述符比myiasm多
  例如,10个客户端来使用一个有10个依赖子表的merge表时,则服务器会使用(10 x 10) + 10个文件描述符;其中每个客户端会开启10个文件描述符(因为有10个子表),并且会开启10个索引文件描述符来在多个客户端中共享使用。
5.索引查询更慢。
  索引查询时,merge存储引擎会向所有子表发送一个查操作,并将最匹配索引种的值返回;当读下一个值时,merge表会从读缓存种读取下一个值,如果读缓存被用完,则读取下一个索引块。这使得merge表在进行eq_ref查询时比较慢,但是在ref查询时则不是很慢。
6.alter修改merge表引擎时,union种的表会丢失
7.merge表自己不维护唯一索引,只是在插入到对应表中时由对应表来确认单张表中是否唯一,而不能保证在所有子表中唯一
8.merge表以及所依赖的子表都不支持分区
9.drop子表中任何一个子表时,windows下必须flush_table merge表或者删除merge表才能删除
 
  • 大小: 83.8 KB
  • 大小: 24.8 KB
分享到:
评论

相关推荐

    Mysql合并表Merge引擎

    1.Merge(MRG_MyISAM)存储引擎类型允许你把许多结构相同的表合并为一个表。当从合并表中执行查询,从多个表返回的结果就像从一个表返回的结果一样。 2.要创建合并表的前提是每一个合并的表必须有同样的表定义(表结构...

    MySQLMerge存储引擎

    MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。本文给大家介绍MySQLMerge存储引擎,需要的朋友参考下吧

    Mysql的MERGE存储引擎详解

    MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。构成一个 MERGE 数据表结构的各成员 MyISAM 数据表必须具有完全一样的表结构。每一个成员数据表的数据列必须按照同样的...

    MySQL数据库:MySQL存储引擎.pptx

    MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...

    MySQL课程之MySQL存储引擎入门

    MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB 、 BDB 支持事务,其他...

    MYSQL数据库存储引擎介绍

    对于MYSQL常见的数据库存储引擎做了介绍,DBD、HEAP、ISAM、MERGE、MyIAS、InnoDB以及Gemeni等

    如何选择合适的MySQL存储引擎

    MySQL支持数个存储引擎作为对不同表的类型的处理器。...就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。 注释:MEMORY存储引擎正式地被确定为HEAP引擎。 ◆ InnoDB和B

    2021年MySQL高级教程视频.rar

    07.MySQL高级存储引擎Memory与Merge特性.avi 08.MySQL高级存储引擎选择原则.avi 09.MySQL高级优化SQL步骤SQL执行频率.avi 10.MySQL高级优化SQL步骤定位低效SQL.avi 11.MySQL高级优化SQL步骤explain指令介绍.avi 12....

    Mysql存储引擎详解

    存储引擎的介绍 关系型数据库表是用来存储和组织信息的数据结构,可以将表理解为由行和列组成的表格。 由于表的类型不同,我们在实际开发过程中,就...这种引擎是mysql最早提供的,这种引擎又可以分为静态MyISAM、动态M

    Mysql InnoDB引擎的索引与存储结构详解

    MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有MERGE、MEMORY(HEAP)等。 主要的几个存储引擎 MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。 MyISAM是Mysql的默认存储引擎。当create...

    MySQL 5.1中文手冊

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

    MySQL 5.1官方简体中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    mysql-installer-community-8.0.24.0.rar

    Merge Archive CSV 等等 MySQL 复制可提高应用性能和可扩展性 MySQL 分区有助于增强大型数据库应用的性能和管理 存储过程可提高开发人员效率 触发器可在数据库层面实施复杂的业务规则 视图可确保敏感信息不受攻击 ...

    MySQL 5.1参考手册

    MySQL 5.1参考手册.chm 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL...

    mysql5.1中文手册

    使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串...

    MySQL 5.1参考手册中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySQL 5.1参考手册 (中文版)

    1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...

Global site tag (gtag.js) - Google Analytics