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

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

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

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

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

這便可以輕易地實現故障排除及監控,由於當你查看MySQL processlist、慢查詢日誌、及其它工具時,你就可以查看到全部的查詢、用戶及用戶活動,可以很明顯地知道誰在什麼時間作了什麼事。要記住,爲每一個獨立用戶設置不一樣的隨機密碼。服務器

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

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

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

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

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


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

相關文章
相關標籤/搜索