首頁 >專題 >PHP Mysql >PHP結合MySQL完成千萬資料處理

PHP結合MySQL完成千萬資料處理

coldplay.xixi
coldplay.xixi轉載
2020-12-22 17:55:204036瀏覽

PHP MySQL欄位講解如何實現千萬級資料處理

PHP結合MySQL完成千萬資料處理

##推薦(免費):PHP MySQL





#mysql分錶思路

PHP 结合 MySQL 千万级数据处理



PHP 结合 MySQL 千万级数据处理



##     一張一億的訂單表,可以分成五張表,這樣每張表就只有兩千萬數據,分擔了原來一張表的壓力,分錶需要根據某個條件進行分,這裡可以根據地區來分錶,需要一個中間件來控製到底是去哪張表去找到自己想要的資料。    中間件:依照主表的自增id作為中介軟體(什麼樣的欄位適合做中間件?要具備唯一性)    怎麼分發?主表插入之後回傳一個id,根據這個id和表的數量進行取模,餘數是幾就往哪張表中插入資料。

   注意:子表中的id要與主表的id保持一致

   以後只有插入操作會用到主表,修改,刪除,讀取,均不需要用到主表

PHP 结合 MySQL 千万级数据处理

redis訊息佇列1,什麼是訊息佇列?

在訊息傳播過程中保存訊息的容器

2,訊息佇列產生的歷史原因

PHP 结合 MySQL 千万级数据处理

訊息佇列的特性:先進先出

把要執行的sql語句先保存在訊息佇列中,然後依序依照順利非同步插入的資料庫中

應用:新浪,把瞬間的註解先放入訊息佇列,然後透過定時任務把訊息佇列裡面的sql語句依序插入到資料庫中PHP 结合 MySQL 千万级数据处理

修改

運算子表進行修改

PHP 结合 MySQL 千万级数据处理

這樣修改有一個問題,主表和子表的資料會出現不一致,如何讓主表和字表資料一致?


PHP 结合 MySQL 千万级数据处理redis佇列保持主表子表資料一致

已修改完成後將要修改主表的數據,存入redis佇列中

PHP 结合 MySQL 千万级数据处理

然後linux定時任務(contble)循環執行redis佇列中的sql語句,同步更新主表的內容

mysql分散式之分錶(查,刪)

PHP 结合 MySQL 千万级数据处理

查詢只需要查詢子表,不要查詢總表

PHP 结合 MySQL 千万级数据处理

#刪除,先根據id找到要刪除的子表,然後刪除,然後往訊息佇列中壓入一條刪除總表資料的sql語句###然後執行定時任務刪除總表資料#### ###########定時任務:#########################mysql分散式之分庫###### #########分庫思路###############分庫原理圖:############

PHP 结合 MySQL 千万级数据处理

mysql分佈式之分庫(增)

PHP 结合 MySQL 千万级数据处理##注意:操作完一個資料庫一定要把資料庫連線關閉,不然mysql會以為一直連線的同一個資料庫

還是取模決定要載入哪個設定檔連接哪個資料庫

PHP 结合 MySQL 千万级数据处理

mysql分散式之分庫(改)

原理同新增

PHP 结合 MySQL 千万级数据处理

mysql分散式之分庫(查,刪除)

原理類似

PHP 结合 MySQL 千万级数据处理刪除

PHP 结合 MySQL 千万级数据处理執行佇列

mysql分散式之緩存(memcache)的應用程式

將資料放入快取中,節省資料庫開銷,先去緩存中查,如果有直接取出,如果沒有,去資料庫查,然後存入緩存中

PHP 结合 MySQL 千万级数据处理

#在編輯資訊之後需要刪除緩存,不然一直讀取的是快取的資料而不是修改過的資料

PHP 结合 MySQL 千万级数据处理

以上是PHP結合MySQL完成千萬資料處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除