我線上有上億條記錄的表,但是很多網上朋友都沒有,那麼我這裡就實踐了一條辦法,來實現自己構造一億條資料記錄的表。實現思路就是先建一張通用的20個字段左右的使用者表,然後寫乙個儲存過程,不停的往這個表裡面寫資料,while迴圈寫上一億次,這樣就形成了一張一億條記錄的表出來。
use test;
create table `uc_user` (
`id` bigint (20),
`user_name` varchar (400),
`user_pwd` varchar (800),
`birthday` datetime ,
`name` varchar (800),
`user_icon` varchar (2000),
`***` char (4),
`nickname` varchar (800),
`stat` varchar (40),
`user_mall` bigint (20),
`last_login_date` datetime ,
`last_login_ip` varchar (400),
`src_open_user_id` bigint (20),
`email` varchar (800),
`mobile` varchar (200),
`is_del` char (4),
`is_email_confirmed` varchar (4),
`is_phone_confirmed` varchar (4),
`creater` bigint (20),
`create_date` datetime ,
`update_date` datetime ,
`pwd_intensity` varchar (4),
`mobile_tgc` varchar (256),
`mac` varchar (256),
`source` varchar (4),
`activate` varchar (4),
`activate_type` varchar (4),
`is_life` varchar (4)
) engine=innodb;
儲存過程內容:
delimiter $$
use `test`$$
drop procedure if exists test.`pro_test_data`$$
create procedure test.`pro_test_data`( pos_begin int,pos_end int)
begin
declare i int;
set i=pos_begin;
while i>=pos_begin && i<= pos_end do
insert into test.`uc_user` (`id`, `user_name`, `user_pwd`, `birthday`, `name`, `user_icon`, `***`, `nickname`, `stat`, `user_mall`, `last_login_date`, `last_login_ip`, `src_open_user_id`, `email`, `mobile`, `is_del`, `is_email_confirmed`, `is_phone_confirmed`, `creater`, `create_date`, `update_date`, `pwd_intensity`, `mobile_tgc`, `mac`, `source`, `activate`, `activate_type`, `is_life`) values(i,'admin','1ba613b3676a4a06d6204b407856f374',now(),'超管','group1/m00/03/bc/wki0d1qkfawahhewaaaoj58qocg271.jpg','1','admin2014','01','1',now(),'192.168.121.103',null,'','10099990001','0','1','0',null,null,null,'1','e5f10caa4ebb44c4b23726cbbd3ac413','1-3','0','2','2','1');
set i=i + 1;
end while;
end$$
delimiter ;
在sql命令視窗介面執行過程如下:
mysql> delimiter $$
mysql> use `test`$$
database changed
mysql> drop procedure if exists test.`pro_test_data`$$
query ok, 0 rows affected (0.00 sec)
mysql> create procedure test.`pro_test_data`( pos_begin int,pos_end int)
-> begin
-> declare i int;
-> set i=pos_begin;
-> while i>=pos_begin && i<= pos_end do
display all 1421 possibilities? (y or n)
-> insert into test.`uc_user` (`id`, `user_name`, `user_pwd`, `birthday`, `name`, `user_icon`, `***`, `nickname`, `stat`, `user_mall`, `last_login_date`, `last_login_ip`, `src_open_user_id`, `email`, `mobile`, `is_del`, `is_email_confirmed`, `is_phone_confirmed`, `creater`, `create_date`, `update_date`, `pwd_intensity`, `mobile_tgc`, `mac`, `source`, `activate`, `activate_type`, `is_life`) values(i,'admin','1ba613b3676a4a06d6204b407856f374',now(),'超管','group1/m00/03/bc/wki0d1qkfawahhewaaaoj58qocg271.jpg','1','admin2014','01','1',now(),'192.168.121.103',null,'','10099990001','0','1','0',null,null,null,'1','e5f10caa4ebb44c4b23726cbbd3ac413','1-3','0','2','2','1');
display all 1421 possibilities? (y or n)
-> set i=i + 1;
-> end while;
-> end$$
query ok, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql>
開始啟用儲存過程錄入一億條資料進表,命令call test.pro_test_data(0,100000000);,這裡時間會比較長一些,畢竟是一億條記錄。
mysql> call test.pro_test_data(0,100000000);
query ok, 1 row affected (2 hours 26 min 56.32 sec) # 看到用時是2 hours 26 min 56.32 sec,2個半小時。
mysql> select count(1) from test.`uc_user`;
| count(1) |
| 100000001 |
1 row in set (3 min 0.14 sec)
mysql>
因為錄入了一億條記錄,所以會產生大量的binlog日誌,我們需要清除這些binlog記錄,免得佔據磁碟空間:
mysql> show master status;
| file | position | binlog_do_db | binlog_ignore_db | executed_gtid_set |
| mysql-bin.007143 | 4589266 | | information_schema,performance_schema | |
1 row in set (0.01 sec)
mysql> purge master logs to "mysql-bin.0007143";
error 1373 (hy000): target log not found in binlog index
mysql> purge master logs to "mysql-bin.007143";
query ok, 0 rows affected (5.44 sec)
mysql>
Linux如何調整history記錄的條數
linux如何調整history記錄的條數 標題 斜體樣式 我們大家在玩linux時經常會用到history這個命令,這個命令預設可以儲存的命令數是1000,1000對於我們linux玩家來說實在是太少了,那麼我們如何調整history的儲存條數呢?1.查詢profile檔案 history命令最大...
mysql獲取第n條記錄
注 利用limit的這個引數使用的特點,可以很方便地在資料庫層面上實現分頁。求第n頁的結果集 select from table name where id 0 limit 第n頁的起始下標,頁大小 注意 limit的最小下標為0。第n頁的起始下標為 n 1 頁大小。頁大小 一頁有多少條記錄。mys...
mysql 隨機選擇一條記錄
mysql 快速隨機選取一條記錄的思考 2010年07月14日 星期三 10 43 標籤 mysql 隨機 分類 mysql 2010 03 04 12 23 本文討論的是如何從mysql乙個資料表中提取一條隨機的效率,同時要保證效率最高。方法一 這是最原始最直觀的語法,如下 select from...