有乙個需求,一張表中有1億條資料,現在要分表處理。資料分離是個麻煩事。以下為本人的解決方案。效率還行。
-- 建立測試表
create table `user` (
`id` int(11) not null auto_increment,
`name` varchar(255) default null,
primary key (`id`)
) engine=innodb default charset=utf8;
-- 測試資料
insert into `test`.`user` (`id`, `name`) values ('1', '1');
insert into `test`.`user` (`id`, `name`) values ('2', '2');
insert into `test`.`user` (`id`, `name`) values ('3', '3');
insert into `test`.`user` (`id`, `name`) values ('4', '4');
insert into `test`.`user` (`id`, `name`) values ('5', '5');
-- 分表1
create table `user_1` (
`id` int(11) not null auto_increment,
`name` varchar(255) default null,
primary key (`id`)
) engine=innodb default charset=utf8;
-- 建立儲存過程
create procedure `insertinit`()
begin
declare total int(11); -- 總迴圈次數
declare idx int(11); -- 當前迴圈
declare maxid int(11); -- 每次迴圈查詢條件的最大id
declare limitnum int(11); -- 分頁查詢的資料
set total = 2;
set idx = 0;
set maxid= 1;
set limitnum=1;
while idx <= total do
insert into user_1 select * from `user` u where u.id>maxid -- 分表條件
limit limitnum; -- 每次從最大id取對應的n條資料
select max(id) into maxid from user_1; -- 獲取當前匯入後的maxid
set idx = idx+1;
end while;
end
MySQL分庫分表遷移方案
現在有乙個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?你看看,你現在已經明白為啥要分庫分表了,你也知道常用的分庫分表中介軟體了,你也設計好你們如何分庫分表的方案了 水平拆分 垂直拆分 分表 那問題來了,你接下來該怎麼把你那個單庫單錶的系統給遷移到分庫分表上...
MongoDB資料遷移方案
mongodump,mongorestore mongodump 命令格式 mongodump h dbhost d dbname o dbdirectory h mongodb所在伺服器位址,例如127.0.0.1,也可以指定埠 127.0.0.1 8080 d 需要備份的資料庫名稱,例如 tes...
distcp資料遷移方案
資料遷移distcp方案 根據遷移的實際情況,由於資料量大 重要 迫切性,因此實施方案每一步都需嚴謹執行,並且當出錯時清楚缺少的資料和補救的辦法。大的步驟分為3步,即export distcp import。在export匯出資料時,以時間戳作為引數,如將三個月的資料為乙個單位匯出,出錯時,重複執行...