互聯網應用程序的用戶與查詢

從虛擬的角度來看,所有應用程序都會使用某種形式的數據庫。今天,大多數系統是運行在PHP及MySQL數據庫上的,當然,也有許多新的技術已經存在或正變得越來越流行,尤其是Java及MongoDB, 此外,還有許多數據庫,如PostgreSQL、Oracle、Redis、Node.js、 Ruby等等。

不幸的是,能把數據庫運用的很好的案例並不多。其原因有很多,如RDBMS 及 NoSQL 系統開發員專業知識不夠,或開發服務器速度太快(或服務器是空的),所以開發員從不關心性能問題,更不必說會關心到安全、運營、維護或管理問題。

然而,本篇博客的重點不是討論這些內容,而是關注如何能夠通過更有效地使用DB用戶及查詢來提高系統性能。

設置獨立的用戶- 第一條黃金法則就是爲每項任務或應用程序設置獨立的DB用戶。DB用戶設置是免費的,那麼就加以利用吧!這就意味着主要站點、搜索系統、登錄系統及cron作業應該使用明顯的DB用戶來執行所有功能,如webmain、搜索、loginsys及cron等等。

這便能夠輕易地實現故障排除及監控,因爲當你查看MySQL processlist、慢查詢日誌、及其它工具時,你就能夠查看到所有的查詢、用戶及用戶活動,能夠很明顯地知道誰在什麼時間做了什麼事。要記住,爲每個獨立用戶設置不同的隨機密碼。

此外,對於每個應用程序,設置不同的用戶賬號,可以使用戶有不同的權限。如果cron作業或搜索系統只需訪問特定的數據庫或表格的話,你便可以限制這些用戶的其它權利。此外,你可以根據需要,使得特定的用戶僅有隻讀權限。如果系統某個工具被******或代碼有bug的話,這種做法能切實地提高系統安全性。

查詢註釋-MySQL比較容易被忽略的功能就是,它可以把註釋隨着SQL查詢一起發送出去。人們通常在SQL節點處進行註釋或在測試時寫上註釋,但是基本不會把註釋發送到服務器。然而,如果你發送出去的話,它們會出現在處理列表及日誌中,在此,你可判斷出查詢來自哪裏,爲什麼運行在這裏等等。

這對於那些速度很慢、運行時間很長的查詢來說,尤其管用。因爲這些慢查詢可以是任何應用程序的一部分,它們會同成百上千的SQL查詢一起提交過來。可以使用命令來查看查詢的節點在哪裏、查詢運行在哪個模塊、查詢的功能是什麼等等,這樣便可以節省很多時間,快速發現並糾正系統性能問題及其它問題。

請注意,MySQL查詢中的註釋會造成查詢緩存丟失數據,即使SQL仍舊是原來的SQL,但是註釋卻改變了。但是若是使用Percona服務器便可以避免這個問題,因爲該服務器在緩存之前會略過註釋。儘管在其它版本中會存在補丁程序,但是如果每個查詢只使用一次或查詢只停留在原來的地方的話,便不會產生問題。

總的來說,在查詢時配置好用戶並使用好註釋便可以極大地改善DB服務器的監控及故障排除性能,極大地提高了安全性、節省了許多發現和糾正問題的時間。若您在此方面有困難,您可請求您的運營團隊幫助您。


( Authored by Steve Mushero | ChinaNetCloud 本博客英文原文請點擊查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章