从虚拟的角度来看,全部应用程序都会使用某种形式的数据库。今天,大多数系统是运行在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 本博客英文原文请点击查看 )