MySQL大量資料入庫的效能比較(分割槽)
測試程式還用之前的
http://blog.itpub.net/29254281/viewspace-1841299/
這次測試,使用的是家裡的電腦,效能比單位工作的電腦配置要好一些.
MySQL配置
innodb_buffer_pool_size=512m
innodb_flush_log_at_trx_commit =0
sync_binlog=0
innodb_support_xa=0
log_bin=master
版本 5.6.14
每次測試,Insert 200w記錄.
1.使用Load File介面,普通表,4個索引,每100個記錄提交一次
測試結果
每秒 10638 Insert
2.使用Load File介面,使用日期的範圍分割槽
測試結果
每秒 10989 Insert
3.在日期範圍分割槽基礎上,增加4個子分割槽
測試結果
每秒 8810 Insert
3.在日期範圍分割槽基礎上,增加16個子分割槽
每秒 6688 Insert
4.在日期範圍分割槽基礎上,增加64個子分割槽
每秒 8368 Insert
結論:
1.在日期的範圍分割槽上,再增加Hash分割槽,顯著降低每秒Insert數量
2.隨著資料量的增加,每秒Insert數量顯著下降. 比如表中已經有200w資料,再增加200w資料,每秒Insert從1w左右直接掉到1k左右.
http://blog.itpub.net/29254281/viewspace-1841299/
這次測試,使用的是家裡的電腦,效能比單位工作的電腦配置要好一些.
MySQL配置
innodb_buffer_pool_size=512m
innodb_flush_log_at_trx_commit =0
sync_binlog=0
innodb_support_xa=0
log_bin=master
版本 5.6.14
每次測試,Insert 200w記錄.
1.使用Load File介面,普通表,4個索引,每100個記錄提交一次
-
create table chat_message(
-
id bigint primary key auto_increment,
-
src_userid bigint not null,
-
target_userid bigint not null,
-
message varchar(200),
-
ts timestamp not null default current_timestamp,
-
s1 int,
-
s2 int,
-
s3 int,
-
s4 int
-
);
-
create index inx_1 on chat_message(src_userid,target_userid,s1,ts);
-
create index inx_2 on chat_message(src_userid,target_userid,s2,ts);
-
create index inx_3 on chat_message(src_userid,target_userid,s3,ts);
- create index inx_4 on chat_message(src_userid,target_userid,s4,ts);
每秒 10638 Insert
2.使用Load File介面,使用日期的範圍分割槽
-
create table chat_message(
-
id bigint auto_increment,
-
src_userid bigint not null,
-
target_userid bigint not null,
-
message varchar(200),
-
ts timestamp not null default current_timestamp,
-
s1 int,
-
s2 int,
-
s3 int,
-
s4 int,
-
primary key (id,ts)
-
)
-
partition by range(UNIX_TIMESTAMP(ts))
-
(
-
partition p1 VALUES LESS THAN(UNIX_TIMESTAMP('2015-10-01 00:00:00')),
-
partition p2 VALUES LESS THAN(UNIX_TIMESTAMP('2015-11-01 00:00:00')),
-
partition p3 VALUES LESS THAN(UNIX_TIMESTAMP('2015-12-01 00:00:00')),
-
partition p4 VALUES LESS THAN(UNIX_TIMESTAMP('2016-01-01 00:00:00')),
-
partition p5 VALUES LESS THAN(UNIX_TIMESTAMP('2016-02-01 00:00:00')),
-
partition p6 VALUES LESS THAN(UNIX_TIMESTAMP('2016-03-01 00:00:00')),
-
partition p7 VALUES LESS THAN(UNIX_TIMESTAMP('2016-04-01 00:00:00')),
-
partition p8 VALUES LESS THAN(UNIX_TIMESTAMP('2016-05-01 00:00:00')),
-
partition p9 VALUES LESS THAN(UNIX_TIMESTAMP('2016-06-01 00:00:00')),
-
partition p10 VALUES LESS THAN(UNIX_TIMESTAMP('2016-07-01 00:00:00')),
-
partition p11 VALUES LESS THAN(UNIX_TIMESTAMP('2016-08-01 00:00:00')),
-
partition p12 VALUES LESS THAN(UNIX_TIMESTAMP('2016-09-01 00:00:00'))
-
);
-
-
create index inx_1 on chat_message(src_userid,target_userid,s1,ts);
-
create index inx_2 on chat_message(src_userid,target_userid,s2,ts);
-
create index inx_3 on chat_message(src_userid,target_userid,s3,ts);
- create index inx_4 on chat_message(src_userid,target_userid,s4,ts);
每秒 10989 Insert
3.在日期範圍分割槽基礎上,增加4個子分割槽
-
create table chat_message(
-
id bigint auto_increment,
-
src_userid bigint not null,
-
target_userid bigint not null,
-
message varchar(200),
-
ts timestamp not null default current_timestamp,
-
s1 int,
-
s2 int,
-
s3 int,
-
s4 int,
-
primary key (id,ts,src_userid)
-
)
-
partition by range(UNIX_TIMESTAMP(ts))
-
subpartition by key(src_userid)
-
subpartitions 4(
-
partition p201506 VALUES LESS THAN(UNIX_TIMESTAMP('2015-10-01 00:00:00')),
-
partition p201507 VALUES LESS THAN(UNIX_TIMESTAMP('2015-11-01 00:00:00')),
-
partition p201508 VALUES LESS THAN(UNIX_TIMESTAMP('2015-12-01 00:00:00'))
-
);
-
-
create index inx_1 on chat_message(src_userid,target_userid,s1,ts);
-
create index inx_2 on chat_message(src_userid,target_userid,s2,ts);
-
create index inx_3 on chat_message(src_userid,target_userid,s3,ts);
- create index inx_4 on chat_message(src_userid,target_userid,s4,ts);
測試結果
每秒 8810 Insert
3.在日期範圍分割槽基礎上,增加16個子分割槽
每秒 6688 Insert
4.在日期範圍分割槽基礎上,增加64個子分割槽
每秒 8368 Insert
結論:
1.在日期的範圍分割槽上,再增加Hash分割槽,顯著降低每秒Insert數量
2.隨著資料量的增加,每秒Insert數量顯著下降. 比如表中已經有200w資料,再增加200w資料,每秒Insert從1w左右直接掉到1k左右.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1843669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Dapper, Ef core, Freesql 插入大量資料效能比較(二)APPSQL
- MySql資料分割槽操作之新增分割槽操作MySql
- zabbix上對mysql資料庫做分割槽表MySql資料庫
- MySQL資料表分割槽手記MySql
- SSD固態硬碟要分割槽嗎?SSD固態硬碟分割槽與不分割槽的效能對比硬碟
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- mysql資料庫中decimal資料型別比較大小MySql資料庫Decimal資料型別
- HashMap,LinkedHashMap,TreeMap讀取大量資料效率的比較HashMap
- mysql分割槽表佔用大量容量處理(最佳化)及歸檔分割槽表MySql
- 使用SQL-Server分割槽表功能提高資料庫的讀寫效能SQLServer資料庫
- MySQL的nnodb引擎表資料分割槽儲存MySql
- 主流資料庫比較資料庫
- 圖資料庫比較資料庫
- 資料庫系統設計:分割槽資料庫
- 大資料入門課程:Hadoop和spark的效能比較大資料HadoopSpark
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 四、python讀mysql寫入達夢資料庫資料庫MySqlPython
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 五、python讀mysql寫入金倉資料庫資料庫MySqlPython
- java比較mysql兩個資料庫中差異JavaMySql資料庫
- mysql 分割槽MySql
- MySQL的分割槽(一)MySql
- MySQL的分割槽(二)MySql
- Zabbix系統MySQL資料庫分割槽表的設定--精簡說明MySql資料庫
- E6 資料庫分割槽技術資料庫
- 國產資料庫oceanBbase,達夢,金倉與mysql資料庫的效能對比 六、python讀mysql資料庫資料庫MySqlPython
- MySql分表、分庫、分片和分割槽MySql
- MySQL 中的 distinct 和 group by 的效能比較MySql
- MySql建立分割槽MySql
- 【MYSQL】 分割槽表MySql
- 理解MySQL分割槽MySql
- 搞懂MySQL分割槽MySql
- 調整分割槽後分割槽不見的資料找到方法
- Mysql 的分割槽型別MySql型別
- influxdb與傳統資料庫的比較UX資料庫
- DB2多分割槽資料庫的常用管理NWDB2資料庫
- Oracle 資料庫 10g中的分割槽功能(轉)Oracle資料庫
- Mysql資料分片技術(一)——初識表分割槽MySql
- MySQL 分割槽表探索MySql
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 磁碟資料庫與記憶體資料庫的特點比較資料庫記憶體