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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL大量資料入庫的效能比較MySql
- MySQL大量資料插入各種方法效能分析與比較MySql
- 分割槽表入無分割槽的資料庫資料庫
- 關於ORACLE MYSQL在非字首分割槽索引上分割槽剪裁的比較OracleMySql索引
- mysql資料庫分割槽技術MySql資料庫
- 分割槽表匯入資料庫資料庫
- 用PHP連mysql和oracle資料庫效能比較(轉)PHPMySqlOracle資料庫
- MySql資料分割槽操作之新增分割槽操作MySql
- Dapper, Ef core, Freesql 插入大量資料效能比較(二)APPSQL
- zabbix上對mysql資料庫做分割槽表MySql資料庫
- 資料庫分割槽的文章收集資料庫
- MySQL 一種比較經濟的資料庫MySql資料庫
- 理解 MySQL(4):並行資料庫與分割槽(Partition)MySql並行資料庫
- 資料庫系列:MySQL引擎MyISAM和InnoDB的比較資料庫MySql
- MySQL資料表分割槽手記MySql
- MySQL入門--分割槽表MySql
- mysql資料庫中decimal資料型別比較大小MySql資料庫Decimal資料型別
- SSD固態硬碟要分割槽嗎?SSD固態硬碟分割槽與不分割槽的效能對比硬碟
- 資料庫分割槽表 什麼情況下需要分割槽資料庫
- 圖資料庫比較資料庫
- 主流資料庫比較資料庫
- HashMap,LinkedHashMap,TreeMap讀取大量資料效率的比較HashMap
- 使用SQL-Server分割槽表功能提高資料庫的讀寫效能SQLServer資料庫
- 詳解ORACLE資料庫的分割槽表Oracle資料庫
- SQL Server資料庫匯入匯出資料方式比較SQLServer資料庫
- DataTable資料批量寫入資料庫三種方法比較資料庫
- MySQL的nnodb引擎表資料分割槽儲存MySql
- java比較mysql兩個資料庫中差異JavaMySql資料庫
- 資料庫系統設計:分割槽資料庫
- 超大資料庫和分割槽手冊大資料資料庫
- 大資料入門課程:Hadoop和spark的效能比較大資料HadoopSpark
- 大資料量下MySQL插入方法的效能比較大資料MySql
- ORM框架和資料庫對系統效能影響的比較ORM框架資料庫
- 資料庫分割槽表分割槽未分配導致的一些問題資料庫
- 全面剖析Oracle資料庫中的分割槽功能Oracle資料庫
- mysql 分割槽MySql
- MySQL分割槽MySql
- XML資料讀取方式效能比較XML