MySQL 使用MRG_MyISAM存储引擎来实现分表
2016-05-05 10:26
731 查看
MRG_MyISAM存储引擎为MySQL的其中一个存储引擎,使用下面语句察看MYSQL数据库是否支持该存储引擎。
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment |
Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL |
NULL | NULL |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO |
NO | NO |
| MyISAM | YES | MyISAM storage engine |
NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| CSV | YES | CSV storage engine |
NO | NO | NO |
| ARCHIVE | YES | Archive storage engine |
NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO |
NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合。“相同”意味着所有表同样的列和索引信息。你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表。而且,任何或者所有的表可以用myisampack来压缩的.
当你创建一个MERGE表之时,MySQL在磁盘上创建两个文件。文件名以表的名字开始,并且有一个扩展名来指明文件类型。一个.frm文件存储表定义,一个.MRG文件包含被当作一个来用的表的名字。这些表作为MERGE表自身,不必要在同一个数据库中。
你可以对表的集合用SELECT, DELETE, UPDATE和INSERT。你必须对你映射到一个MERGE表的这些表有SELECT, UPDATE和DELETE 的权限。
如果你DROP MERGE表,你仅在移除MERGE规格。底层表没有受影响。
当你创建一个MERGE表之时,你必须指定一个UNION=(list-of-tables)子句,它说明你要把哪些表当作一个来用。如果你想要对 MERGE表的插入发生在UNION列表中的第一个或最后一个表上,你可以选择地指定一个INSERT_METHOD选项。使用FIRST或LAST值使得插入被相应地做在第一或最后一个表上。如果你没有指定INSERT_METHOD选项,或你用一个NO值指定该选项。往MERGE表插入记录的试图导致错误。
使用案例:
CREATE TABLE IF NOT EXISTS `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE IF NOT EXISTS `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
INSERT INTO `table1` (`name`) VALUES('name1');
INSERT INTO `table2` (`name`) VALUES('name2');
CREATE TABLE IF NOT EXISTS `uTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
INDEX(id)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 UNION=(table1,table2) INSERT_METHOD=LAST AUTO_INCREMENT=1;
select id,name from uTable;
+----+--------+
| id | name |
+----+--------+
| 1 | name1 |
| 1 | name2 |
+----+--------+
2 rows in set (0.00 sec)
mysql> INSERT INTO `uTable` (`name`) VALUES('name3');
mysql> select id, name from table2
-> ;
+----+-------+
| id | name |
+----+-------+
| 1 | name2 |
| 2 | name3 |
+----+-------+
2 rows in set (0.00 sec)
--本篇文章转自:http://blog.sina.com.cn/s/blog_83bb57b70101nlho.html
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment |
Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL |
NULL | NULL |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO |
NO | NO |
| MyISAM | YES | MyISAM storage engine |
NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| CSV | YES | CSV storage engine |
NO | NO | NO |
| ARCHIVE | YES | Archive storage engine |
NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO |
NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合。“相同”意味着所有表同样的列和索引信息。你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表。而且,任何或者所有的表可以用myisampack来压缩的.
当你创建一个MERGE表之时,MySQL在磁盘上创建两个文件。文件名以表的名字开始,并且有一个扩展名来指明文件类型。一个.frm文件存储表定义,一个.MRG文件包含被当作一个来用的表的名字。这些表作为MERGE表自身,不必要在同一个数据库中。
你可以对表的集合用SELECT, DELETE, UPDATE和INSERT。你必须对你映射到一个MERGE表的这些表有SELECT, UPDATE和DELETE 的权限。
如果你DROP MERGE表,你仅在移除MERGE规格。底层表没有受影响。
当你创建一个MERGE表之时,你必须指定一个UNION=(list-of-tables)子句,它说明你要把哪些表当作一个来用。如果你想要对 MERGE表的插入发生在UNION列表中的第一个或最后一个表上,你可以选择地指定一个INSERT_METHOD选项。使用FIRST或LAST值使得插入被相应地做在第一或最后一个表上。如果你没有指定INSERT_METHOD选项,或你用一个NO值指定该选项。往MERGE表插入记录的试图导致错误。
使用案例:
CREATE TABLE IF NOT EXISTS `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE IF NOT EXISTS `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
INSERT INTO `table1` (`name`) VALUES('name1');
INSERT INTO `table2` (`name`) VALUES('name2');
CREATE TABLE IF NOT EXISTS `uTable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
INDEX(id)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 UNION=(table1,table2) INSERT_METHOD=LAST AUTO_INCREMENT=1;
select id,name from uTable;
+----+--------+
| id | name |
+----+--------+
| 1 | name1 |
| 1 | name2 |
+----+--------+
2 rows in set (0.00 sec)
mysql> INSERT INTO `uTable` (`name`) VALUES('name3');
mysql> select id, name from table2
-> ;
+----+-------+
| id | name |
+----+-------+
| 1 | name2 |
| 2 | name3 |
+----+-------+
2 rows in set (0.00 sec)
--本篇文章转自:http://blog.sina.com.cn/s/blog_83bb57b70101nlho.html
相关文章推荐
- mysql5.7.x服务无法启动,服务没有报告任何错误问题
- MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?我们来搞搞清楚
- mysql二进制类型
- mysql索引总结----mysql 索引类型以及创建
- mysql之视图详解
- mysql触发器的作用及语法
- mysql触发器(Trigger)简明总结和使用实例
- 我的MYSQL学习心得(十二) 触发器
- MySQL触发器使用详解
- mysql导出数据到文件
- mysql之触发器trigger
- MySQL存储过程详解 mysql 存储过程
- MySql trigger 触发器
- C#双串口采集光照度与温度和湿度 数据保存在mysql 参数自动保存 解析格式十六进制收发
- MySQL密码忘记,怎么办?
- MySQL文档存储的发展
- Mysql 语句执行顺序
- mysql-5.7.12-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法
- Mysql 数据中文乱码问题解决
- membership 启用 roleManager 抛出异常:未能加载文件或程序集MySql.Web