我大约10%进入我的网站项目,我正在试图弄清楚我在数据库上加载了什么样的负载。当用户登录时,我有许多每分钟触发的功能,每当有人访问该页面时,就会拉出一些元素,例如区号列表,州和国家,以构建注册页面。我确信我可以将其中的一部分移到PHP中,因此不涉及数据库。
在6天,14小时,57分钟和58秒中,我显示了120,998,563个查询,平均每分钟12.69 k和每秒211.43。我列出了79的最大并发连接数。最后两个连接没有意义。收到的平均值为每小时133 MiB,平均发送量为每分钟1,997 MiB。
答案 0 :(得分:2)
超过查询数量,可能重要的是它们的作用,以及如何:如果表中有数百万行,并且没有使用正确的索引,那么服务器将会崩溃......如果您的查询是超优化,使用正确的索引,和/或您没有太多数据,您的服务器将会存在。
您可能希望对最常用的查询使用EXPLAIN,以查看是否至少优化/使用索引; - )
然后,您可能希望添加如此类型的缓存机制,例如APC或memcached;至少如果你能......
例如,列表状态和国家可能永远不会改变:它可以被缓存,不会数千次访问数据库,但只是,例如,每天一次或每小时一次。
答案 1 :(得分:1)
更多提示:
A - 确保你没有运行nXn运行时查询(或者至少尽可能地避免它)。我的意思是不要去:
-query -while(查询) - query2 - 而(query2) - 结束查询2 - 查询时结束
绝对不要进入第三级(n ^ 3)......
B - 关于速度的另一件事:当你不需要时 - 不要去选择*来自。如果您只需要名字和姓氏,请仅选择这些......数据将更快恢复。你将能够更快地完成它。
答案 2 :(得分:0)
您可能希望启用并开始监控慢速查询日志(http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html)。查询数量不一定等于高负载 - 只要它们达到索引,甚至更好的查询缓存。一些设计不良的查询可能会扼杀您的服务器 - 而且查询日志缓慢会将这些查询指出,以便您可以将时间用于优化它们。
答案 3 :(得分:0)
正如其他人所说,查询的数量并不重要,更多的是查询类型以及数据库索引的程度。另外,正如其他人提到的那样看一下像APC或memcache这样的缓存机制,但我也会推荐一个php类缓存系统。我知道zend框架有一个,我个人使用PEAR库中的Cache_Lite。您可以缓存数据库查询,这些查询不需要绝对是php级别的最新更新信息。因此,如果您的页面运行,说10个查询,但实际上只有2或3个需要是新信息,您可以将其他查询缓存5或10分钟。即使是一分钟的缓存也可以在高容量网站上为您节省大量的交易。
答案 4 :(得分:0)
另一个因素是您的托管环境。在许多共享主机上,允许的同时数据库连接数量有限制,并且此限制可能会低得惊人。从统计上来说,假设访问者在一天中均匀分布,通常会很好,但是如果您有足够多的受众希望内容在某个时间出现,那么如果他们全部请求,您最终可能会最大限度地利用可用的连接脚本(和打开数据库连接)在一个狭窄的时间框架内。
答案 5 :(得分:-1)
最好看的是每页查询的数量,然后还要调查它们是什么类型的查询。例如,简单的SELECT语句非常快,但如果要将3个表连接在一起,则非常慢。它还取决于数据库表中的索引和限制。
基本上,我们真的没有足够的信息告诉你。即使你提供了什么,一次也不知道用户数量,这是非常没用的。