mysql資料庫表上百萬記錄優化思路雜談
我的mysql資料庫表上百萬記錄,插入資料的時候超慢,插入一筆都差不多將近1秒鐘了
有沒有做索引?
資料量大了一般要做分區分表處理的,實時性要求高的一般要做快取或者資料匯流排分層處理的
有分10個庫,每個庫100個表
是不是上面索引太多了,
插入的時候會重建索引
有可能,索引需要用於分表分庫
優化半天沒啥效果,減少了幾個索引還是平均插入一筆資料需要0.35秒
那太慢了,資料庫操作基本都要毫秒級的才行
資料庫也調整了,事務也調整了
插入一筆都要0.013秒最少,現在同步插資料庫搞不定了。
看了一下網上分析,最快正常一筆插入只需要:0.00109秒,事務插入只需要:0.00015秒
不過他插入的資料很簡單,測試的資料量只有50萬。
insert into `insert_table` (`datetime`, `uid`, `content`, `type`) values ('0', 'userid_0', 'content_0', 0);
他這資料量才50萬太少了
實際中很多資料量都達到千萬級的,實際中的資料都比較多的,有些文章內容很多的
我的資料量少的時候,每筆也只能達到0.003秒一筆
還是差好遠,10倍,可能我插入的資料比較多,加上有乙個鍵,我已經把另外3個不必要的鍵先刪掉。
你用的是不是ssd硬碟?ssd硬碟比機械硬碟快很多倍
不是,4核16g,一共放了十幾個資料庫在裡面
ssd硬碟太貴了
很多伺服器還是機械硬碟,但linode伺服器大部分是ssd硬碟
linode更貴
你寫入的時候可以用ssd硬碟啊
備份的用機械盤
可能需要公升級硬體
多個伺服器一起搞
要麼你就臨時寫到記憶體裡面,用redis,然後定時儲存到硬碟上
機械盤你怎麼優化都不行的
瓶頸在那裡
我之前還以為你是用ssd硬碟的
那估計redis會撐爆
mongodb也是大部分寫記憶體的啊
現在瓶頸在寫資料庫,
有專用的記憶體資料庫伺服器,也是比較貴
就是要吧區塊鏈展開到關係型資料庫,好查詢
這個跟業務本身沒多少關係的
-----------
資料庫光靠調引數,以經提公升到最快0.007秒多一筆插入的速度了
看來還是大資料技術比較重要
調整了那些引數提公升這麼多?
調了很多引數,mysql、springboot、shardingsphere、druid
mysql主要調了那些引數?
| innodb_buffer_pool_size
| max_allowed_packet
| innodb_log_file_size
| innodb_log_buffer_size
| max_connections
| innodb_flush_log_at_trx_commit
| sync_binlog
| max_connections
這些調了這些
那也沒多少引數,要配合**做調整?
它裡面引數很多
**引數也要調整
那就比較難搞了
我感覺真正的問題還沒有找到
我看網上有個人說,一秒鐘可以寫入1w(一般硬碟),sdd硬碟可以寫入2w
我現在一秒鐘只能寫入一百多筆
那應該還有很大優化空間
應該可以提公升100倍
由於現在確定無法使用事務及批量插入,所以估計要減少10倍,最多只能提公升10倍。如果增加cpu和記憶體就不知道了。
換ssd硬碟也可以提公升很多倍
億級資料量的話基本都不用mysql解決方案了,再怎麼優化都有瓶頸的
上千萬級後瓶頸就越來越明顯了,想加個字段,重建個索引都很困難的,要停掉讀寫服務才能搞,資料庫異常修復也是漫長的等待
資料庫調的差不多了
它反正也不卡,資料庫後台的連線也用的不多,有好幾個程式再往裡面同時插入資料,如果把其他幾個程式關掉,還能提公升2倍的速度,應該也差不多了
徹底解決問題只能從架構來搞了
雖然是分表分庫分了幾十個庫,但是這些資料庫其實是在同台物理伺服器裡面的
現在最快每筆0.007秒
如果把其他應用都關閉,插入一筆應該是到0.003秒
可能需要評估一下如何加入hadoop來進行儲存及處理區塊鏈的資料
據說現在tidb很火,可以試一下
(一)分布式資料庫tidb-簡介
tidb 是 pingcap 公司設計的開源分布式 htap (hybrid transactional and analytical processing) 資料庫,結合了傳統的 rdbms 和 nosql 的最佳特性。tidb 相容 mysql,支援無限的水平擴充套件,具備強一致性和高可用性。
雲資料庫mysql-關係型資料庫-mysql原始碼優化版-產品詳情-阿里雲
雲資料庫hbase serverless 1元1年試用
區塊鏈大資料的感覺你應該用hodoop hbase 這些解決方案,不適合用mysql的解決方案了
hodoop部署起來還是比較麻煩的,不過現在比較成熟了
alert table 不就可以動態加列了嗎
mysql8.0之前版本 數量量大的時候很慢,經常會失敗的
加這個要鎖表的
你可以試下有幾千萬條資料還持續在讀寫操作的,加欄位經常失敗的
我用pgsql
需要停掉讀寫服務才能搞,需要的時間也比較多
我不停讀寫服務直接加
pgsql底層都一樣的
版本是多少的,是不是在mysql8.0基礎上改的?
最新版我用過效能最好的應該是mssql
mysql pgsql這類免費的還是差了一點。
百萬級資料庫記錄下的Mysql快速分頁優化例項
點評 limit 1,111 資料大了確實有些效能上的問題,而通過各種方法給用上where id xx,這樣用上索引的id號可能速度上快點兒。by jack mysql limit分頁慢的解決辦法 mysql limit 優化,百萬至千萬條記錄實現快速分頁 mysql 效能到底能有多高?用了php半...
百萬級資料庫記錄下的Mysql快速分頁優化例項
百萬級資料庫記錄下的mysql快速分頁優化例項 mysql 效能到底能有多高?用了php半年多,真正如此深入的去思考這個問題還是從前天開始。有過痛苦有過絕望,到現在充滿信心!mysql 這個資料庫絕對是適合dba級的高手去玩的,一般做一點1萬篇新聞的小型系統怎麼寫都可以,用xx框架可以實現快速開發。...
mysql資料庫的建議 MySQL資料庫優化小建議
背景 那啥,你過來一下!怎麼了?我 都單元測試了的,沒出問題啊!我一臉懵逼跑到運維大佬旁邊。你看看!你看看!多少條報警,趕快優化一下!運維大佬簡訊列表裡面好多mysql cpu 100 報警簡訊。再看看專案名稱不就是我前幾天剛發布的專案嗎!我心底一沉,趕快賠上笑臉。這個一定優化,馬上優化!那個,能不...