摘要:更多詳情,請看原文章批量插入性能優(yōu)化相關(guān)文章高并發(fā)簡單解決方案隊列緩存批量入庫離線整合秒殺活動設(shè)計方案
一、MySQL批量插入優(yōu)化在項目中,經(jīng)常都會遇到高并發(fā)問題,如在某個時間點有100個人對同一數(shù)據(jù)進(jìn)行更改,這樣就會產(chǎn)生問題,最后導(dǎo)致的數(shù)據(jù)會不準(zhǔn)確,通常的解決高并發(fā)的方法有讀取數(shù)據(jù)時加緩存,寫入數(shù)據(jù)時添加到隊列,下面羅列一些處理高并發(fā)的常見方法供大家參考。
對于一些數(shù)據(jù)量較大的系統(tǒng),數(shù)據(jù)庫面臨的問題除了查詢效率低下,還有就是數(shù)據(jù)入庫時間長。特別像報表系統(tǒng),每天花費在數(shù)據(jù)導(dǎo)入上的時間可能會長達(dá)幾個小時或十幾個小時之久。因此,優(yōu)化數(shù)據(jù)庫插入性能是很有意義的。
經(jīng)過對MySQL innodb的一些性能測試,發(fā)現(xiàn)一些可以提高insert效率的方法,供大家參考參考。
一條SQL語句插入多條數(shù)據(jù)。
常用的插入語句如:
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ("0", "userid_0", "content_0", 0); INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ("1", "userid_1", "content_1", 1);
修改成:
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ("0", "userid_0", "content_0", 0), ("1", "userid_1", "content_1", 1);
修改后的插入操作能夠提高程序的插入效率。這里第二種SQL執(zhí)行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事務(wù)讓日志)減少了,降低日志刷盤的數(shù)據(jù)量和頻率,從而提高效率。通過合并SQL語句,同時也能減少SQL語句解析的次數(shù),減少網(wǎng)絡(luò)傳輸?shù)腎O。
這里提供一些測試對比數(shù)據(jù),分別是進(jìn)行單條數(shù)據(jù)的導(dǎo)入與轉(zhuǎn)化成一條SQL語句進(jìn)行導(dǎo)入,分別測試1百、1千、1萬條數(shù)據(jù)記錄。
還可以在事務(wù)中進(jìn)行插入處理。
更多詳情,請看原文章:MySQL批量SQL插入性能優(yōu)化
相關(guān)文章:
【高并發(fā)簡單解決方案】redis隊列緩存 + mysql 批量入庫 + php離線整合
秒殺活動設(shè)計方案
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22526.html
摘要:獲取消息隊列中的腳本,拼接,批量入庫。批量入庫腳本天級統(tǒng)計腳本總結(jié)相對于其他復(fù)雜的方式處理高并發(fā),這個解決方案簡單有效通過緩存抗壓,批量入庫解決數(shù)據(jù)庫瓶頸,離線計算解決統(tǒng)計數(shù)據(jù),通過定期清理保證庫的大小。 需求背景:有個調(diào)用統(tǒng)計日志存儲和統(tǒng)計需求,要求存儲到mysql中;存儲數(shù)據(jù)高峰能達(dá)到日均千萬,瓶頸在于直接入庫并發(fā)太高,可能會把mysql干垮。 問題分析 思考:應(yīng)用網(wǎng)站架構(gòu)的衍化過...
閱讀 2220·2021-11-15 11:36
閱讀 1383·2021-10-14 09:42
閱讀 4208·2021-09-30 09:52
閱讀 1718·2021-09-24 10:24
閱讀 968·2021-09-02 09:56
閱讀 2685·2019-08-30 13:11
閱讀 3060·2019-08-30 13:06
閱讀 948·2019-08-30 12:56