1. 程式人生 > 其它 >如何檢視php日誌_如何讓你的資料庫支撐起百萬使用者?(三)

如何檢視php日誌_如何讓你的資料庫支撐起百萬使用者?(三)

技術標籤:如何檢視php日誌

點選“藍色”字關注,跟我每天進步1%

9d468284de02f85c6423483e9c48dba1.png

你好,是我琉憶。

對於一個專案來說,使用者數達到百萬已經是一個不小的量級,這時對資料庫的效能要求很高。那麼我們如何對百萬級別的資料庫進行優化,讓它更會的支撐百萬使用者呢?

承前啟後,最後一步,我們說說如何對資料庫進行監控和容災。以及日後的資料庫維護監控問題。

01

MySQL效能監控

資料庫上線後,並不是就沒然後了,擔心的問題可不少。開始需要對資料庫進行監控,保證它99.99%的可靠!

所以我們需要對資料庫的執行監控,使用記憶體、CPU、執行等監控。還有要讓資料庫能夠支援容災等問題。避免主或從掛機影響應用。

可以執行監控的語句:

1)select * from information_schema.innodb_trx\g 每隔幾秒更新當前 MySQL 的事務 id 資訊。2)找到鎖等待更多的 SQL 及事務。select * from information_schema.innodb_locks\g 3)show full processlist;檢視排行靠前的 SQL 及一些連線資訊。4)show engine innodb status\g可以詳細的檢視 innodb 的 buffer、free buffer、鎖、tps 等資訊,也能看到一些具體的鎖資訊。

其他監控優化手段:

1、增加快取

資料庫增加快取系統,把熱資料快取到記憶體,如果快取中有請求的資料就不再去請求 MySQL,為了減少資料庫負載。快取實現包括本地快取和分散式快取。

本地快取是將資料快取到本地伺服器記憶體中或者檔案中,分散式快取可以快取海量資料。

擴充套件性好,主流的分散式快取系統包括:Memcached、Redis。

Memcached 效能穩定,資料快取在記憶體中,速度很快,QPS 理論可達 8w 左右。如果想資料持久化就選擇用 Redis,效能不低於 Memcached。

工作過程:請求資料 ==> redis 是否存在 ==>無(MySQL 資料庫)

2、主從複製與讀寫分離

鑑於我們系統是讀多寫少,可部署一主多從架構,主資料庫負責寫操作,並做雙機熱備,多臺從資料庫做負載均衡,負責讀操作。

怎麼來實現讀寫分離呢?大多數企業是在程式碼層面實現讀寫分離,效率高。另一個種方式通過代理程式實現讀寫分離,企業中應用較少,會增加中介軟體消耗。主流中介軟體代理系統有 MyCat、Atlas 等。

在這種 MySQL 主從複製拓撲架構中,分散單臺負載,大大提高資料庫併發能力。如果一臺從伺服器能處理 2000 QPS,那麼 3 臺就能處理 4000 QPS,而且容易橫向擴充套件,當時系統擴容了四從,高峰時期也能頂住接近 8000QPS,畢竟系統也不是經常做活動,這種架構也可以隨時擴容機器。

3、 分庫

分庫是根據業務將資料庫中相關的表分離到不同的資料庫中,例如 WEB、日誌、車輛軌跡等庫。如果業務量很大,還可將分離後的資料庫做主從複製架構,進一步避免單庫壓力過大。

02

資料庫監控及維護

要及時關注資料庫的效能指標:QPS(Queries Per Second,每秒查詢書)和 TPS(Transactions Per Second),通過 show status 檢視執行狀態。

檢視當前的狀態一切是否穩定。

1、開啟慢查詢日誌,方便對問題進行監控。

MySQL 開啟慢查詢日誌,分析出哪條 SQL 語句比較慢,支援動態開啟。

在 my.cnf 檔案中開啟,可以指定慢查詢多長時間,系統認定為慢 SQL。

2、對資料庫資料進行備份,預防萬一。

使用 XtraBackup 凌晨定時備份資料。

可以使用一些第三方資料庫監控軟體進行監控。

b3bf80d20ab847dfb7fba8d42d10c625.png

後話

至此資料庫百萬級的優化就介紹這麼多。這些知識在自己日常工作中一定要注意和積累,可以多應用,可以用筆記本記錄。不斷提升自己的能力。

86e96e7db95998aa64988b09355d42aa.gif

如果你覺得好,可以點個在看,讓更多人進步1%哦~

404f19d23a0417fdbadf150ec9a97f10.png 404f19d23a0417fdbadf150ec9a97f10.png

往期精選

  • PHP面試常考內容之Memcache和Redis(1)

  • PHP面試常考內容之Memcache和Redis(2)

  • PHP面試之面向物件(1)

  • PHP面試常考內容之面向物件(2)

  • PHP面試常考內容之面向物件(3)

bd57c3b75df2367cefe2275bbbf979ac.png

如有疑問或想跟我交流,

可以加我的個人微信:leoyistar

關注琉憶程式設計庫,PHP面試資料都在這

b71140188ce958198dcafec898f7a9ec.png bd17ca81299c04ea8ee1ea7edcc3f084.gif

點選好看”讓更多人進步1%~