适度的SQL查询可能会破坏WordPress应用程序开发站点的执行。偶尔,适度的查询是结构不合理的SQL的后果,这种方式从来就不应该这样做。
更重要的是,在某些情况下,温和的查询实际上是某个时刻的快速问题 – 但随着网站变得越来越老练,调查变得越来越慢,无法保持对扩展数据库的了解。
尽管SQL变得温和,但应该研究一些方法来发现和解决WordPress应用程序开发中的问题。在这里和那里可能需要某些Web应用程序,并且可能没有足够的能量,资质或支出计划来进行自定义改进。没有任何准备的创建可能是某些问题的答案,但它可能比从当前代码库开始需要更长的时间。WordPress最初的结构是一个博客阶段,并且它一直保持着优秀。尽管如此,它已经发展成为一个完全成熟的内容管理系统(CMS),并且出于一些目的,甚至可以快速创建一个强大的Web应用程序,并且基本上比定制改进更低的支出计划。虽然WordPress提供内置开发应用程序,它可以用于Web应用程序,以使其更加有用。固有的页面和帖子结构可以用于很多事情,但是如果需要包含,搜索或质疑,控制和显示自定义信息和字段,则需要一些额外的工作。
寻找缓慢的查询
找到温和问题的起源包括两个阶段:
- 找出哪些问题真的是温和的。
- 识别正在运行它们的程序。
人们应该对两个模块和一个SaaS采取措施,使他们能够发现适度的查询。
查询监视器
要获取有关当前正在运行的页面的信息,可以使用此模块。尽管有关于WordPress内部活动的整个数据集,但它给出了逐点细分:
- 这个要求有多少问题?
- 页面上的哪个查询占用了最长的时间?
- 哪些能力在SQL问题中投入最多的能量?
- 这些查询是来自模块,主题还是WordPress中心
查询屏幕甚至可以识别具有令人不安的红色内容的温和问题,这使得选择问题SQL变得非常简单。
调试栏
用于查找格式中等SQL的另一种非凡的工具是旧的,可信赖的Debug Bar模块。当页面加载时,Debug Bar提供了一个关于WordPress内部功能的数据:
- WP_Query的参数
- 请求数据(计算修订规则协调)
- 当前页面生成的SQL查询
要在调试栏中启用SQL,用户应该在站点上的某个位置允许SAVEQUERIES – 可能在wp-config.php中
警告:SAVEQUERIES会影响站点上的执行,并且可能不应在生成服务器上使用。但是,它可以用在推进机器上。
使用Debug Bar查找中等SQL并不是非常容易。例如,它没有为用户提供可排序的表或具有适度的查询功能。调试栏提供的是容量跟踪,它将用户精确地指向问题来源的方向。
这是已加载文档的简要说明以及正在执行查询的结果。通常情况下,人们热衷于破败的绝对保持部分; 这是温和的问题被执行的地方,以及应该开始他的狩猎的地方。设置提示此问题的每个容量的方便之处在于,它可以揭示在任何情况下SQL执行的原因。
NewRelic的
NewRelic是一个管理Web应用程序开发执行的管理,包括WordPress应用程序开发。主管部门提供了大量有关网站执行情况的数据。在信息中失去所有方向感很难,NewRelic为用户提供SQL查询的每一分钟细节。
NewRelic和我们之前引用的模块之间存在两个值得注意的对比:
- NewRelic提供了有关PHP执行的更多见解,直到精确计算每个函数所花费的时间
- NewRelic跟踪对站点的每个需求,因此可以稍后引用它来发现中等SQL。模块只是给他当前的页面。
重要的是,NewRelic有一个免费的安排级别,提供有关网站执行情况的一般数据,但是,为了检查奇异的需求和找到适度的查询,必须提高支付安排以获得奇特的几率和结束。
使用EXPLAIN了解慢速查询
到目前为止,设备已经得到保护,可以找到适度的问题。目前应该知道为什么这些询问会妨碍事情。
MySQL EXPLAIN口号可以启用,呃,澄清正在发生的事情。将EXPLAIN添加到查询的开头表明MySQL如何执行问题。对于复杂的查询,EXPLAIN可以帮助区分SQL中的中等焦点,例如,适度的子查询或浪费的活动。
修复慢速查询
由于人们意识到查询是适度的,并且EXPLAIN已经向用户透露了原因,因此应该采取一些选择来解决这些困倦问题。
选项1:扭转问题
可能存在一个问题,即编辑帖子的屏幕速度非常慢。查询是自定义字段的元框。
确定的SQL部分带来了一个来自wp_postmeta表的meta_keys列表,它很可能不会以下划线的符号开头。GROUP BY解释意味着每个结果都是特殊的。
多次运行此查询,这是它可以采取的程度的时间:
1.7145秒
1.7911秒
1.8076秒
1.7707秒
1.8456秒
人们可能会开发出一个导致类似输出的查询。它必须被选为一种meta_keys。Exceptional是特定的等价词,恰好是一个SQL解释!
选项2:添加索引
当用户在设置的MySQL表上运行SQL问题时,它需要检查整个表以了解哪些是对特定查询有重要意义的行。当桌子变得庞大时,检查开始需要一段时间。
这就是MySQL记录所在的位置。列表将信息放在表格中并对其进行排列,使信息的查找要求低得多。通过以特定方式对信息进行分类,文件有助于减少MySQL为每次查询完成的过滤措施。
文件可以添加到单个段或不同的部分。
使用meta_key上的文件,第一个SQL提问时间有点类似于:
0.0041秒
0.0023秒
0.0030秒
0.0025秒
0.0019秒
这非常聪明。
文件警报的表达式:每次INSERT在af表上使用列或UPDATE时,都会重新确定列表,这可能是一项昂贵的活动。记录可以更快地从表中读取,但写入速度较慢。虽然正确放置的索引列表可以非常好地工作,但是如果不检查列表对数据库的一般影响,就不应该对它进行痴迷。
选项3:缓存查询结果
一旦意识到存在一个温和的问题。而不是改变问题,可能存在一种情况,它只是放弃了调查的后果。这样,人们就会限制查询的执行频率,并且他会经常获得“免费通行证”。
WordPress Transients API是保留查询的方法之一。利用瞬态来消除昂贵任务的后果,例如,
- 对外部网站的请求(例如获取正在进行的Facebook帖子)
- 缓慢的处理块(例如寻找具有惯常关节的巨大弦)
- 数据库查询慢!
采摘方法
已经列出了许多替代方案,并且很可能有17种不同的方法来理解这种温和的探究。应采取哪种方法?
选择1(改变问题)取得了辉煌的成果。但是,应该考虑修改后的调查通常不具有类似结果的可能性。人们可能会在不知不觉中将这些代码弄得一团糟。
根据调查所使用的表格和章节,备选方案2(包括记录)并非总是可以想象。由于WordPress应用程序开发中心表,人们不得不强调记录的其他影响:
- 中心刷新程序是否需要额外的清单?
- 将包括一个文件调低不同的查询,类似于INSERT和UPDATE?
备选方案3(通过无家可归者保留结果)具有无关紧要的效果 – 用户无需更改第一次查询,也无需调整数据库结构。
通常,人们选择选项3.在一个特定的情况下,他可以选择另一个替代方案,依赖于他正在修复的问题或具有SQL问题的特定网站。对大多数执行问题肯定没有一步到位的适应性反应,因此允许一个人与其他人的决定不同 – 或者在没有片刻延迟的情况下尝试三者中的每一个!
保持更新
它在这里草拟了一个真正的问题。CSS-Tricks上的自定义字段框确实是一些非常温和的数据库查询的罪犯。它同样勾勒出各种可能的安排方式。
构思全新理念
有一种不同的方法可以尝试和加速问题执行,包括更多的工作,而不仅仅是调整查询或包括列表。问题最慢的部分之一是连接表从客户端ID到项目ID的工作,并且需要为每个客户端执行此操作。
可以通过创建存储许可信息的表以及所有许可的客户端ID和项ID来对信息进行非规范化,并简单地针对特定客户进行查询。人们需要利用INSERT / UPDATE / DELETE上的MySQL触发器将表修改为许可证表(或其他依赖于信息如何改变的人),但是这将显着改善对该信息提出质疑的执行。
因此,如果各种联接在MySQL中缓和了问题,那么将查询分解为至少两个关联并在PHP中独立执行它们然后在代码中收集和引导结果可能会更快。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/wp/260107.html