mysql 分表操作
2014-04-17 10:31
267 查看
背景:项目的原始数据每周10W,需要存储两年的数据,于是考虑将原始数据表进行分表(以id取模24分成24个表)。但是对于分表和合并表之间的一些操作不是很熟悉,特进行一些正式操作前的测试。
一、查询(合并表和分表保持一样的结构和索引,这样可以通过查询合并表,让合并表自己打开查找对应的分表完成查询是可以的)
二、删除和修改(不确定的主要是在这块,不确定能不能通过操作合并表影响到对应的分表),如下进行测试后发现删除是可以的(备注:项目实际中也可以通过update合并表,完成对符合条件的分表数据修改)。
一、查询(合并表和分表保持一样的结构和索引,这样可以通过查询合并表,让合并表自己打开查找对应的分表完成查询是可以的)
二、删除和修改(不确定的主要是在这块,不确定能不能通过操作合并表影响到对应的分表),如下进行测试后发现删除是可以的(备注:项目实际中也可以通过update合并表,完成对符合条件的分表数据修改)。
-- 测试分表删除操作机制 START -- 创建分表1 DROP TABLE t1; CREATE TABLE t1 ( `id` int(11) NOT NULL , `goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci; -- 创建分表2 DROP TABLE t2; CREATE TABLE t2 ( `id` int(11) NOT NULL , `goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci -- 创建合并表 DROP TABLE t_all; CREATE TABLE t_all ( `id` int(11) NOT NULL , `goods_id` int(11) NULL DEFAULT NULL COMMENT '宝贝id' , PRIMARY KEY (`id`) ) ENGINE=MRG_MyISAM UNION(t1,t2) INSERT_method=NO DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci INSERT INTO t1 VALUES (1,35),(2,56),(3,45); INSERT INTO t2 VALUES (1,62),(2,53),(3,39); SELECT * FROM t_all DELETE FROM t_all WHERE goods_id > 55
相关文章推荐
- mac 访问mysql客户端
- MySQL正则表达式入门教程
- mysql错误:“ Every derived table must have its own alias”(每个派生出来的表都必须有一个自己的别名)
- mysql冲数据库中导出一份csv
- mysql 导出
- mysql 导出
- MySQL my.cnf参数配置优化详解
- MySql中文乱码解决方法
- mysql增量备份
- MySql - SQL Error (1130): Host IP is not allowed to connect to this MySQL server
- Mysql临时表的用法 - 51CTO.COM
- Mysql中文乱码解决思路和过程
- MySql模糊查询like通配符使用详细介绍
- IP is not allowed to connect to this MySQL server
- MySQL深入01-SQL语言-数据字典-服务器变量-数据操作DML-视图 推荐
- mysql 数据库引擎介绍
- mysql left join right join
- 基于MySQL命令行模式备份数据方法详解
- MySQL正则表达式入门教程
- mysql 利用触发器(Trigger)让代码更简单