MySQL和WordPress:了解数据库如何工作


WordPress使用MySQL,一个开源数据库管理系统,将所有网站的信息存储和检索到您的帖子和页面的内容以及您的评论,用户名和密码.
如果您需要想象它,请将您的网站的数据库视为文件柜和MySQL作为所做的公司.
MySQL是Web应用程序的热门选择- Joomla!和Drupal也使用它,并且根据维基百科很多高调的公司,如谷歌,Facebook,Twitter,Flickr和YouTube也使用它.
那么MySQL究竟是如何使用WordPress的?在本文中,我会介绍一些关于MySQL的所有内容以及它如何与WordPress交互,包括数据库架构,存储引擎,优化技术和优化和数据库管理的最佳实践.
在此帖子中,我们将介绍:
- 是什么mysql?
- WordPress数据库架构或:表,表,表
- 多路数据库结构非常不同
- 插件使用您的数据库,Too
- MySQL存储引擎解释了
- wp_query
- 优化WordPress数据库
- 只安装您实际使用
- 垃圾邮件
- 修订
- 删除未使用的表
- 手动优化数据库
- 使用插件优化您的数据库
的插件
- 修复您的WordPress数据库
- WordPress数据库如何缓存工作
- 瞬态API
- memcached
- Redis
- Mariadb
- wordpress和 wpdb 类
- 工具可以帮助您管理数据库
- phpmyadmin
- navicat
- 了解MySQL如何使用WordPress
什么是mysql?
mysql是用于创建网站的开源Web应用程序软件的灯泡堆栈中的中央组件.灯代表Linux,Apache,MySQL和PHP.MySQL也用于LEMP堆栈,替换Nginx(发音为Engine-X)的Apache.
WordPress使用PHP使用PHP标记中的SQL查询来存储和检索来自MySQL数据库的数据.例如,如果您是WordPress供电的成员身份站点的成员,则SQL用于登录您,检索唯一的成员身份证件,检查您是否有活动成员身份,并确保正面显示正确的配置文件数据-End.
PHP和SQL与WordPress手事,允许您根据许多不同因素创建动态内容,例如您的ID和用户角色.这允许您进行隐藏或向特定用户(例如管理员,编辑器和订阅者)隐藏或显示内容的内容.没有SQL,MySQL都不是可能的.
插件和主题还使用您的数据库存储数据,例如选项,然后在PHP标记内使用SQL来动态查询数据库并输出内容.
值得一提的是,如果你运行一个小网站(即关于你的猫的博客),你真的不需要用SQL弄乱.只有当您在具有SQL知识的企业级网站上工作时才成为必不可少的.
WordPress数据库架构或:表,表,表
要帮助您了解WordPress与MySQL的适用程度如何,让我们通过典型数据库中的表WordPress商店运行.
WordPress具有相当简单和简单的数据库模式.它由11个表组成,它由WordPress的核心组件使用,不能通过删除或删除.
wp_commentmeta -将元数据存储在WordPress帖子和页面上留下的所有评论,包括自定义帖子类型.
wp_comments -存储您网站上的所有评论,包括发布,草稿,待处理和垃圾邮件评论.
wp_links -将输入的所有信息保持在WordPress的链接管理器中,这是现在很少使用,而链接功能本身就会从WordPress 3.5弃用,并在新安装上隐藏默认情况下.
wp_options -不仅是存储在此表中的WordPress选项,例如您的读取和讨论设置,但现在更常见的插件用于使用 WP_OPTIONS 进行存储保存的设置与自定义表相对.
wp_postsmeta -因为您最可能猜到此表存储与帖子和页面相关联的所有元数据.
wp_posts -存储所有帖子,以及您的页面以及您的导航/菜单项.
wp_terms -此表存储帖子,链接和标签的类别.
wp_term_reliationshiths - posts与来自 wp_terms 表的类别和标签相关联,此关联在WP_term_Relationships表中维护.在此表中也保持了链接与各自类别的关联.
wp_term_taxonomy -描述了 wp_terms_table 中条目的类别,链接或标签等分类系统.
wp_usermeta -将所有用户的元数据存储在 wp_users 表中.
wp_users -所有用户都存储在此表中.请记住,诸如密码之类的数据序列化.
多路数据库结构非常不同
多站立的数据库与独立网站的数据库非常不同,因此如果您管理一个或另一个,或者您理解差异的重要性,您可以有效地管理您的网站.
wp_blogs -在多站网络上创建的每个站点都存储在此表中.
wp_blog_versions -存储网络中每个站点的当前数据库版本,主要用于网络的更新过程.它会更新,因为每个站点升级.
wp_registration_log -日志管理员用户在注册每个新站点时创建.
wp_site -此表包含主站点地址.
wp_sitemeta -每个站点都有网站数据;该表存储了站点数据,包括各种选项,包括站点admin.
wp_users -包含所有用户,而此字段也用于单站点安装.它包括两个额外的字段/行垃圾邮件和删除.
wp_usermeta -使用多站点时,该表存储每个站点的用户元数据(它不是在单个站点安装中重新创建 wp_usermeta ).
特定于站点的表也将添加到您的数据库中,即 WP_2_Commenta,WP_2_Comments,WP_2_LINKS .您的主站点数据存储在现有的未编号表中,后续站点在主站点表的命名结构之后的编号表中存储了它们的数据.
插件使用您的数据库,Too
安装插件时,它将使用您的数据库存储和检索与该插件相关的数据.例如,自定义字段插件将保存它为数据库创建的字段,然后稍后检索它们以在关联的帖子上显示.如果没有数据库,则插件将无法存储它创建的任何字段,将字段与前端显示的帖子或查询值相关联.
插件可以使用默认的wordpress数据库表,例如 wp_posts 或 wp_postsmeta ,或创建自定义表.插件创建自己表的一个流行示例是WooCommerce,它创建了八个自定义表来存储和检索产品ID,订单项目,税率和其他产品信息.
如果您担心插件在数据库中创建表,请不要-插件常常执行此操作.虽然使用现有表(例如 WP_Options )优选用于存储插件数据,但它并不总是可能的,尤其是与WooCommerce等更复杂的插件.
注意:当您从站点中删除插件时,删除数据库中的自定义表,否则在安装的生命周期中,您将使数据库中的一个未使用的表集中删除自定义表.某些插件随附选项可在卸载它时自动删除与插件关联的所有数据.请记住,当您绝对确定您不会再次使用特定插件时,您应该只删除自定义表,因为没有返回.
MySQL存储引擎解释了
mysql使用存储引擎存储,处理和检索表中的信息.虽然MySQL为13个不同的存储引擎提供支持,但两个最常用的选项是Myisam和InnoDB.
大多数时间,MySQL配置文件中定义的默认存储引擎通常是MyISAM,这就是人们通常与之结合的.由于许多人不打扰花时间选择存储引擎,他们只需使用默认值.
如果您确定选择存储引擎,则具有WordPress,这是一个更容易造成的决定-而Myisam可能更快地阅读,因此由于其行锁定机制,InnoDB可以更快地阅读和写作.由于WordPress严重依赖阅读和写作,InnoDB是最佳选择.
值得注意的是,在PHPMyAdmin中创建的默认表使用MyISAM存储引擎.通常情况下,这意味着如果您使用共享托管或非专业人员WordPress主机,则您的表将使用MyISAM而不是InnoDB.如果要更改存储引擎,可以使用以下SQL查询(您可以在您喜欢的数据库管理工具中执行,例如PHPMyAdmin):
SET default_storage_engine=InnoDB;
注意:对于一些令人难以置信的奇怪原因,默认使用myisam/by phpmyadmin创建的表.这意味着如果您使用共享托管或非专科主体主机,您的表将是Myisam.不要害怕!您可以更改数据库使用的引擎.要更改一个表,可以使用:
加载GIST CODEMEMEMEMELKEY-JACK/9C313C82AD5357FF825799DF36727414
更改存储引擎表按表可以是耗时的过程,在这种情况下,您可能希望查看Pantheon的优秀教程.
你现在可以思考,"很棒!但是如何涉及自定义表格的插件-他们使用哪种发动机?"答案是:他们可以使用混合.有些声明SQL语句以使用InnoDB,而其他人则使用Myisam.总的来说,在安装创建自定义表的新插件后,最好在您的数据库中留意,并检查它使用的MySQL引擎.
wp_query
WP_Query
类是一个非常强大的WordPress查询,您可以用于访问数据库中的帖子.我们之前已经在这个博客上覆盖了WP_Query
,所以我真的只在这里指出它.
为WP_Query
提供更全面的指南,请查看我们的帖子深入指南以征服WP_Query.
优化WordPress数据库
慢地的最常见原因之一是维护不良的非优化数据库.
我们看了选择数据库引擎的优势,现在我们将看看如何删除存储在网站上的一些垃圾,以使其更加倾向.
有关如何优化数据库的全面指南,请查看我们的指南优化WordPress数据库-一个完整的指南.
在开始优化数据库之前,首先创建完整备份是一个好主意,以防您遇到任何问题.我强烈推荐Snapshot Pro,我们的备份插件.它可以用一键单击备份和恢复整个网站,完成Dropbox和S3集成.

仅安装您实际使用
的安装插件
在没有实际执行任何操作的情况下优化数据库的简单方法是安装插件,您将在安装插件时使用并不安装插件.它很容易被吸引到激活闪亮的新插件!只要记住,对于安装的每个插件,将创建新数据,又将填满您的数据库.
已知用于存储大量数据的插件,这些插件通常分为四类:
- 安全插件 -大多数安全插件收集并存储有关对您网站攻击的信息,以保护其免受未来的攻击,垃圾邮件,登录尝试等等.
- 统计插件 -这些插件不会从第三方来源中拉出数据,即Google Analytics,而是存储数据库中的页面,访问,浏览器,关键字等度量标准.
- 反垃圾邮件插件 -由于反垃圾邮件插件的本质,它们存储了像安全插件的大量数据,包括IP地址,电子邮件地址,国家等信息.
- 流行的帖子插件 -追踪视图和喜欢跨越数百或数千篇帖子的东西,可以使您的数据库成长.最好将这些插件保持在最低限度.
所以应该停止使用上面的插件吗?是和否.虽然您应该非常重视您的网站的垃圾邮件和安全性,除非您运行的网站类型尝试并避免统计和流行的帖子类型插件.
垃圾邮件
垃圾邮件评论是如果未正确维护,则臃肿数据库的主要原因之一.我已经看到了成千上万的垃圾评论的网站.幸运的是,删除它们是更简单的.
要运行这样的sql命令:
DELETE FROM wp_comments WHERE comment_approved = ‘spam'
或者,如果您登录到WordPress仪表板并转到评论>垃圾邮件,则会看到"空垃圾邮件"按钮.点击它,每个垃圾邮件评论都会消失.在删除任何垃圾评论之前,请务必检查它们是否确实是垃圾邮件.当然,评论是垃圾邮件的评论,实际上是真实的.
如果您不想手动处理垃圾邮件,用于停止其轨道的最流行的插件是Akismet,它允许您设置要自动删除的垃圾评论.
修订
wordpress 2.6引入了一个后修订版功能,它允许您存储以前版本的帖子,即保存所有草稿和更新.与流行的信念相反,每个帖子只保留一个自动保存,自动删除旧的自动软管版本.这意味着您的表将不断使用AutoSaves成长.但是,每次单击帖子上的"更新"时,您的表将增加或保存新草稿.
虽然修订很有用,但我不会亲自禁用它们,我也不会推荐禁用它们,可以通过删除旧修订来节省数据库中的空间.要保持最大的修订次数,您可以为 WP-Config.php 文件添加方便定义:
define( 'WP_POST_REVISIONS', 5 );
只需更改数字,无论您想要保留许多修订.进入1或更多存储器的修订次数加上AutoSave,-1存储每次修订,0将其设置为False并存储除AutoSave之外的任何修订.
要从现有帖子中删除Refisims,您需要运行一个SQL命令删除它们或使用WordPress优化插件来删除它们.如果要使用SQL,则可以运行这样的命令:
加载GIST Codemonkey-Jack/86117B995A95724AB34D1313A3E536F3
此查询删除这些帖子的所有帖子修订,但也会删除所有元和相关分类.但请记住,这删除了所有修订,而不仅仅是一些修订.
如果您宁愿使用插件删除修订,请在删除修订后查看优化数据库.它不仅允许您删除修订,它还也是多站点兼容性,并允许您删除像未使用的标签,孤儿邮寄元等的内容.
删除未使用的表
创建自定义表的插件通常不会在卸载时删除它们.如果删除插件并再次计划使用它,则需要删除它创建的表.虽然有类似WPDBSpringClean的插件可以为您执行此操作,但它尚未在两年内更新,并且通常您不应该使用插件来删除表.
没有简单的方法可以知道没有使用的数据库表,但通常插件使用插件的名称或插件的主类命名他们的表,让它们更容易找到.当然,就像我已经提到的那样,在删除表或修改数据库之前,请务必创建一个完整的备份.
手动优化数据库
mysql附带优化查询,根据官方手册,"重新组织表数据和相关索引数据的物理存储,以减少存储空间并在访问表时提高I/O效率."对每个表所做的确切更改取决于该表所使用的存储引擎.
您可以使用数据库管理工具运行优化查询,例如phpmyadmin.
使用插件优化数据库
如果您宁愿插件为您完成所有工作,WP-Optimize是一个流行的免费选项,它在500,000+ WordPress安装上处于活动状态.它可以删除后期修订,旧元数据,草稿帖子,也可以批量删除垃圾评论.
它还可以应用本机优化查询,无需您必须在数据库管理工具中使用数据库管理工具或手动查询.太容易了!
修复WordPress数据库
如果您的数据库因任何原因被损坏,请不要恐慌!您可以编辑 wp-config.php 文件来修复它:
define('WP_ALLOW_REPAIR', true);
当您保存了文件时,请击中浏览器并转到 www.example.com/wp-admin/maint/repair.php
在维修屏幕上,您可以只需修复数据库或修复并优化数据库.一旦您选择了选项,WordPress将尝试自动修复数据库.
有时以这种方式修复您的数据库,不起作用,或仅部分地工作.在这种情况下,打开PHPMyAdmin并尝试修复数据库逐表.
但是如果修复数据库,那么这种方式也不起作用?除非您是一个SQL Ninja和数据恢复专家,否则如果您有一个,否则您需要恢复恢复您网站的先前备份.
WordPress数据库缓存如何工作
我可以永远继续缓存和Wordpress,因为有很多了解,但对于这篇文章来说,我将涵盖你需要知道的最重要的事情.
瞬态API
瞬态API与WordPress中的选项API(在数据库中存储数据的简单且标准化的方式,这使得可以轻松地创建,访问,更新和删除选项),但是使用添加的添加功能到期时间,简化了使用 wp_options 数据库表临时存储缓存的信息的过程.
在wordpress中,您可以使用瞬态来不断更改您想要过期和更新的数据,而且还可以作为您想要缓存的更替代品的替代品.
一个缺点是瞬态不良;也许瞬态有一个到期时间,但未被设置为删除,导致瞬态尝试加载,这不存在.此外,安装瞬态删除插件的网站所有者已经获得了普及;删除插件和不应删除的主题使用的瞬态可能导致您的网站的多个问题.
最终,如果您确切地知道您正在做什么以及它们所做的内容,您应该只删除瞬态-不要只是批量删除所有瞬态,因为有一个很好的机会,您将结束一个破损的网站.
memcached
在您的网站上使用MEMCACHED允许您加快RAM中的密集数据库查询(数据和对象)以减少数据库上的读数.这允许您的页面更快地加载,因为数据已经存在,而无需进行查询.
一个缺点,就像所有缓存一样,如果您更新帖子/页面/网站并已缓存,则需要在显示更改之前刷新缓存.
许多错误经常用memcaching制作,安装一个插件,如w3总缓存,看看memcache的设置,并在没有实际具有memcached设置的情况下激活它.您不能只设置选项,而无需配置Memcached数据库/服务器侧!错误地配置的MEMCACHED(或任何对象缓存)可以在您的站点和数据库上撤损HACOC,导致其他事项发生瞬态问题,导致依赖瞬态的自动更新和插件/主题的问题.
redis
毫无疑问,我最喜欢的数据库驱动缓存用WordPress缓存是redis,这使得页面加载时间的大量差异.与MEMCACHED不同,REDIS已经内置持久性;与memcached一样,Redis也是内存数据结构存储(将数据存储在RAM中).
您可以使用Redis对象缓存插件将Redis连接到WordPress站点.但请记住,首先,您需要设置Redis并配置缓存.一种方法,您可以执行此操作是使用预测脚本或HHVM的Redis扩展(仅当使用HHVM代替PHP).
确保您可明智地配置Redis -不要在每个键上存储大块数据块,并在您将要赚取数千个Redis呼叫时,没有使用数据库缓存,保持良好的键数量.在较长的对象缓存事务中.
是否使用memcached或redis,两者之间存在一个重要差异:memcached是一个存储器存储缓存系统,而redis是一个适当的数据结构服务器,允许它用作真实数据存储而不是a易失性缓存.在stackoverflow上看看这个伟大的答案,因为如果您没有使用memcached系统的大型投资设置,则应使用Redis在Memcached上使用Redis.
mariadb
Mariadb是由Oracle收购后的原始创始人和MySQL的一个原始创始人和开发人员的一个叉子.
据称,玛丽亚达姆被众所周知,由于更快的复制和线程池,允许数万个没有明显的I/O放缓的线程,因此可以更快.MariaDB还提供更多的存储引擎,替代品可以替换,如InnoDB等更多流行的存储引擎.
虽然MEMCACHED不适用于MariaDB,您可以使用优秀的查询缓存来设置Maria DB的数据库缓存.
所以你应该切换到玛丽亚达吗?它是开源,更快,总的来说,提供了一些很棒的功能.如果您有一个中型大网站,是的,我肯定会录_MENDIT.但如果您在与一个小地点的廉价共享托管,则不值得花时间或努力.
最终,MariaDB是我对MySQL的偏好,尤其是由于其处理连接,这意味着较少的那些可怕的"无法建立与数据库"消息.这不是说MySQL无法通过优化和缓存大大改善,我将在下面进一步探索.
wordpress和 wpdb 类
wordpress中的wpdb
类是核心软件和数据库之间的所有数据库交互的核心.它也用于两个插件和主题.
总是记得逃避SQL命令以防止SQL注入攻击是很重要的.过去几年有多种情况,其中众所周知的插件包含易受攻击的SQL代码,黑客已被利用.
我不会在这个主题上过于深入.相反,为了进一步读取WPDB类上的WordPress Codex条目,逃离WordPress中的SQL并在插件中创建自定义表格,以获得WordPress和WPDB类.
工具,以帮助您管理数据库
大多数Web主机提供对数据库的某种类型的访问,通常是PHPMyAdmin,它提供了一种易于使用的图形用户界面,用于与您的数据库一起使用.
phpmyadmin

数据库管理的自由和开源脚本.PHPMyAdmin提供了一种在数据库上优化,修复,导入,导出和运行SQL操作的简单方法.它适用于MySQL和MariaDB.
navicat

navicat是一种高级功能的数据库管理工具.除了任何良好数据库管理工具的所有标准功能以及导入/导出,表查看器,优化和修复之外,它还提供SQL Builder/Editor和Object Designer.像phpmyadmin一样,它适用于mysql和mariadb.
了解MySQL如何使用WordPress
数据库是WordPress的一个组成部分,提供您网站的骨干(或文件柜).确保您的网站顺利运行,优化并定期备份可能是一个耗时的任务,但具有正确的知识,工具和插件,管理数据库相当简单,易于做.