如何改善网站数据库减慢访问网站速度慢的问题?

数据库如何减慢网站的速度?

一个全新的网站运行得非常快,但随着它的使用时间缓存数据越多,你可能会注意到某些页面上的某些地方迟缓,特别是具有复杂功能的页面。假设我们常见想在产品页面底部显示“购买此产品的客户也购买了......”,要从数据库中提取此信息,你需要执行以下操作:

从当前产品开始,

查看该产品最近被添加到任何人的购物车中的次数(上面的“订购商品”表),

查看与这些购物车相关的订单(仅适用于已完成的订单),

找到发出这些订单的客户,

看看那些客户做出的其他订单,

查看这些订单的购物车内容(再次是“订单商品”),

查看这些产品的详细信息,

确定最常出现的产品并显示它们。

实际上,你可以在一个大型数据库查询中完成所有这些操作,或者可以将其拆分为多个不同的查询,无论哪种方式,当数据库有20个产品,12个客户,18个订单和67个订单商品(即购物车的商品)时,它可能会非常快速地运行。但如果没有高效编写和编程,那么500个产品,10,000个客户,14,000个订单和100,000个订单项将会慢得多,而且会降低页面速度。

索引数据库表

在页面运行的数据库查询中,我们会看到有WHERE条件,这是SQL过滤结果的方法。例如,如果正在查看网站上的“帐户历史记录”类型的网页,则可能会出现这样的查询,以查找有人放置的所有订单。像这样的东西:SELECT * FROM orders WHERE customerid = 2;这将检索客户使用数据库ID 2下达的所有订单。在计算机上,数据库中有100,000个订单,运行此命令需要0.2158秒。它可以帮助数据库快速检索索引数据,这是加速数据库查询的最快方法之一。

优化表格

MySQL和其他类型的数据库软件具有用于优化其数据的内置工具,如果您的表经过多次修改,那么您可以定期运行这些工具以使数据库表更小更高效,但它们需要一些时间来运行(从几秒钟到几分钟或更长时间,具体取决于表的大小),并且它们可以阻止其他查询在优化期间在桌面上运行,因此在非繁忙时执行此操作时间最好。

确保使用缓存

就像Web浏览器缓存您访问的页面的副本一样,数据库软件会缓存流行的查询。如上所述,当第一次使用索引运行时,下面的查询花了0.0019秒:SELECT * FROM orders WHERE customerid=2;立即再次运行相同的查询仅需0.0004秒,这是因为MySQL已经记住了结果并且可以第二次返回它们而无需再次查找它们。

减少使用JOIN查询数

重构查询以使用JOIN可能会变得复杂,因为它涉及更改随附的代码,如果您的慢页面运行数千个数据库语那么网站服务器自然就会反映慢。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181027A1R9AL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券