首頁 >後端開發 >PHP問題 >php mysql 並發解決方案

php mysql 並發解決方案

藏色散人
藏色散人原創
2020-08-12 09:40:532866瀏覽

php mysql並發解決的方法:1、一條SQL語句插入多個資料;2、修改插入語句為「INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type `)」。

php mysql 並發解決方案

推薦:《PHP影片教學

在專案中,常常都會遇到高並發問題,如在某個時間點有100個人對同一數據進行更改,這樣就會產生問題,最後導致的數據會不准確,通常的解決高並發的方法有讀取數據時加緩存,寫入資料時加入隊列,下面羅列一些處理高並發的常見方法供大家參考。

一、MySQL批次插入最佳化

對於某些資料量較大的系統,資料庫面臨的問題除了查詢效率低下,還有就是資料入庫時間長。特別像報表系統,每天花在資料導入上的時間可能會長達幾個小時或十幾個小時之久。因此,優化資料庫插入效能是很有意義的。
經過MySQL innodb的一些效能測試,發現一些可以提高insert效率的方法,供大家參考。

1.一條SQL語句插入多條資料。
常用的插入語句如:

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執行效率高的主要原因是合併後日誌量(MySQL的binlog和innodb的事務讓日誌)減少了,降低日誌刷盤的資料量和頻率,進而提高效率。透過合併SQL語句,同時也能減少SQL語句解析的次數,減少網路傳輸的IO。
這裡提供一些測試比較數據,分別是進行單一資料的導入與轉換成一條SQL語句進行導入,分別測試1百、1千、1萬筆資料記錄。

php mysql 並發解決方案

也可以在交易中進行插入處理。

#

以上是php mysql 並發解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn