我必须在一个页面中为一个人运行一次10个mysql查询。这很糟糕吗?我有很好的托管,但仍然,它可以打破或什么?非常感谢你。
答案 0 :(得分:25)
Drupal站点通常可以为每个请求提供150到400多个查询。查询数据库所花费的总时间仍然低于1秒 - 这不是杀死服务器的数量,而是查询的质量/复杂性(以及可能搜索的数据集的大小)。
我不知道你在谈论什么问题,但在大多数网站上10并不多。
如果您关心性能,可以随时查看在数据库管理程序(如MySQL Workbench)中执行查询所需的时间。
答案 1 :(得分:13)
10个快速查询可能比1个慢速查询更好。在正常和偷看的交通状况中定义响应时间,吞吐量方面可接受的内容,并测量这10个查询是否有问题(即不尊重您的期望)。
如果是,请尝试更改设计并找到更好的解决方案。
答案 2 :(得分:5)
有多少查询太多了?
我会改写你的问题:
我的应用程序足够快吗?
为您的应用程序提供“足够快”的业务定义(基于业务/用户需求),提出一种模拟所有使用场景和预期负载的方法,创建该负载和配置文件的模拟(跟踪) /时间)它。
这种做法相当于一种有根据的猜测。任何不足之处都是纯粹的猜测,而且毫无价值。
如果您的应用程序已经投入生产,并且在大多数情况下运行良好,您可以从用户那里获得反馈以确定痛点。从那里,你可以模拟那些痛点和相应的负荷和轮廓。
记录您的结果。一旦对应用程序进行了改进,就可以使用工具来确定所做的优化是否实现了目标。
答案 3 :(得分:4)
当我认为你是新的开发时。我建议专注于最合乎逻辑且最明显的方法来避免过度处理。这通常是通过缓存第一次执行并在运行查询之前检查缓存结果来避免重复查询。
之后不要花太多时间考虑查询数量并专注于编写良好的代码。这意味着很好地使用类,方法和函数。虽然仍有许多需要学习的内容,但您不希望过度复杂化与数据库的每次交互。
享受你正在做的事情并保持整洁。这将导致更容易调试代码,当您具备进一步获取代码的知识时,这本身可以带来更好的性能。如果原始工作写得很好,应用程序的性能可以很快得到改善。
答案 4 :(得分:3)
这取决于查询总和的CPU周期数。
1个查询可以消耗比100个更多的CPU周期。这完全取决于它们的内容。
您可以按照本指南优化它们开始:http://beginner-sql-tutorial.com/sql-query-tuning.htm
答案 5 :(得分:2)
我认为这不是问题。 10对站点而言,查询并不多。越少越好,但是当你有3000 - 5000时,你应该考虑你的结构。
当你通过一个包含数百万行而没有索引的表进行一次查询时,那么就是10比多。
我见过Typo3网站有很多扩展,可以通过缓存发出7500个请求。安装和安装时会发生这种情况,并且不会查看会发生什么。
但你可以看一下你对查询较少的表进行逻辑JOIN。
答案 6 :(得分:0)
有大问题和小问题。哪些是你的?通常,您应该尝试在尽可能少的查询中获取数据。数据库服务器上的负载越重,随着流量的增加就越难以为客户端提供服务。
答案 7 :(得分:0)
只是为其他好的答案添加一些不同的视角:
首先,同意,您所进行的查询的类型和复杂性将比查询数量的99%更重要。
但是,在极少数情况下,数据库服务器的网络路径上存在高延迟(即数据库服务器是远程或类似的,不是说这是一个逻辑或理智的设置,但我已经看到它完成了)然后您希望最大限度地减少完成的查询次数,因为每次与数据库服务器通信时,网络传输时间将比计算查询所需的时间长一个数量级或两倍。这种情况确实可以扼杀您的页面加载时间,因此您真的希望最大限度地减少查询次数(实际上,您只是想更改服务器设置......)。