[MySQLFAQ]系列–新年新思想:MySQL也能併發匯入資料
對MySQL的使用者而言,備受詬病的一個問題就是匯入SQL備份檔案時不能併發,使得匯入的效率很低。
今天,我們就來改變下思路,嘗試一下併發匯入的方法,供大家參考。
1、問題分析
想要實現併發匯入,其實沒那麼難,最簡單的思路就是:將完整的檔案切分成多份,然後併發匯入即可。
在這裡,我自己的做法是這樣的:
今天,我們就來改變下思路,嘗試一下併發匯入的方法,供大家參考。
1、問題分析
想要實現併發匯入,其實沒那麼難,最簡單的思路就是:將完整的檔案切分成多份,然後併發匯入即可。
在這裡,我自己的做法是這樣的:
1) 首先,假設只有一個庫;多個庫的情況也是類似,無非就是迴圈 2) 計算SQL檔案總行數 3) 計算SQL檔案總大小 4) 設定每個切分檔案最大尺寸 5) 初始化表結構 6) 迴圈處理SQL,按照切分檔案最大尺寸切分成多個小檔案 7) 併發匯入多個小檔案
上述方法中,如果資料表是 MyISAM 表,則併發匯入沒有問題,但如果是 InnoDB 表,則會有表級鎖 AUOT-INC 導致併發效率不高的麻煩,儘管如此,那也比單個檔案序列匯入來的快一些。想要避免這個麻煩,就得采用 MySQL 5.1 版本了,因為在 5.1 中,改進了 AUTO-INC 的處理方式,規避了表級鎖,很大程度提高了併發效率。
2、實際測試
事先設定:最大並大匯入執行緒是16個。
2.1 MySQL 5.0.67 版本
2、實際測試
事先設定:最大並大匯入執行緒是16個。
2.1 MySQL 5.0.67 版本
innodb_flush_log_at_trx_commit = 1 序列匯入:01:51:34 並行匯入:01:25:05 innodb_flush_log_at_trx_commit = 0 序列匯入:01:49:36 並行匯入:01:11:29
2.2 MySQL 5.1版本
innodb_flush_log_at_trx_commit = 1, innodb_autoinc_lock_mode = 0 序列匯入:01:52:28 並行匯入:01:38:13 innodb_flush_log_at_trx_commit = 1, innodb_autoinc_lock_mode = 1 序列匯入:01:54:55 並行匯入:01:26:24 innodb_autoinc_lock_mode = 0 並行匯入:01:38:13 innodb_autoinc_lock_mode = 1 並行匯入:01:05:51
更加詳細的測試就不再做了。
3、小結
從上面的測試結果可以看到,MySQL 5.1在AUTO-INC鎖方面的改進還是非常大的,對於想要提升併發效能,同時應用相對不是太複雜,並且不擔心會碰到bug的童鞋可以多多嘗試下。
3、小結
從上面的測試結果可以看到,MySQL 5.1在AUTO-INC鎖方面的改進還是非常大的,對於想要提升併發效能,同時應用相對不是太複雜,並且不擔心會碰到bug的童鞋可以多多嘗試下。
本文轉自葉金榮51CTO部落格,原文連結:http://blog.51cto.com/imysql/308994,如需轉載請自行聯絡原作者
相關文章
- mysql資料匯入匯出MySql
- mysql資料匯出匯入MySql
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- 用資料泵併發匯入資料的一個案例
- mysql 資料庫匯入匯出MySql資料庫
- MySQL資料庫匯入匯出MySql資料庫
- MySQL入門--匯出和匯入資料MySql
- MySQL資料的匯入MySql
- 【mysql】資料庫匯出和匯入MySql資料庫
- mysql匯入匯出.csv格式資料MySql
- mysqldump匯入匯出mysql資料庫MySql資料庫
- MySQL表資料匯入與匯出MySql
- Mysql 資料庫匯入與匯出MySql資料庫
- MYSQL資料檔案匯入MySql
- ORACLE MYSQL互相匯入資料OracleMySql
- [MySQLFAQ]系列–資料不算大,備份卻非常慢MySql
- MySQL資料匯入匯出牛刀小試MySql
- MySQL系列第四篇:利用MySQL工具之SQLYog進行資料匯入MySql
- Windows 下 MySQL 資料匯入 RedisWindowsMySqlRedis
- MySQL匯入百萬資料實踐MySql
- MySQL 批量匯入資料優化MySql優化
- Mysql匯入資料相當慢MySql
- MySQL資料匯入匯出亂碼問題MySql
- 【MySQL】白話說MySQL(五),資料的匯出與匯入MySql
- GeoServer + PostGIS 進行圖層檔案資料匯入併發布Server
- MySQL入門系列:MySQL資料型別MySql資料型別
- 小白也能懂的Mysql資料庫索引詳解MySql資料庫索引
- [MySQLFAQ]系列–如何更改MySQL的預設字符集MySql
- [MySQLFAQ]系列–mysql如何計算開啟檔案數MySql
- 資料也能進超市
- [MySQLFAQ]系列–如何為一個資料表指定字符集MySql
- MySQL資料匯入匯出之Load data fileMySql
- MySQL資料匯入匯出方法與工具介紹MySql
- 用Navicat把SQLServer資料匯入MySQLServerMySql
- MySQL Shell import_table資料匯入MySqlImport
- Solr-5.3.1 dataimport 匯入mysql資料SolrAIImportMySql
- 把Excel表資料匯入到mysqlExcelMySql
- MySQL資料匯入到infobright中MySql