SEO 百科
数据库
本页目录
数据库
数据库 是按一定结构组织起来的数据集合,网页程序真正用到的是数据库管理系统,写入、读取与处理数据都由它完成[1]。站长需要认识它,因为文章、评论、分类这些内容都存在里面,页面由程序查询完数据库再拼出来;查询慢一秒,页面就慢一秒。选哪一套数据库、是自建还是买托管,会同时决定维护成本与页面响应时间。
存什么与网页生成的关系
网页上的正文、标题、作者、发布时间、分类、标签、评论、订单和站点设置,通常都放在数据库的表里。
MySQL 官方对关系型数据库的解释是,数据分散存放于一张张独立的表,而不是全部塞进一个大仓库;表与表之间的关系由数据库固定下来,应用读到的数据就不会出现重复、过时或缺失[1]。
一次页面请求会依次经过这几步:
- 浏览器或爬虫发出请求;
- 网页程序解析请求参数;
- 程序向数据库发起查询;
- 数据库返回结果行;
- 程序把结果套进模板,生成 HTML;
- 响应返回给请求方。
命中页面缓存时,第 3 步与第 4 步可以直接跳过。这也是缓存能大幅缩短响应时间的原因。
常见选型与取舍
网页场景里最常见的四套系统,官方对各自的定位写得比较清楚。
| 系统 | 定位 | 典型场景 |
|---|---|---|
| MySQL | 关系型数据库管理系统 | 通用建站程序 |
| MariaDB | 与 MySQL 同源 | 多数 Linux 发行版默认安装 |
| PostgreSQL | 对象关系型数据库管理系统 | 查询与数据关系复杂的库 |
| Redis | 内存里的键值库 | 缓存、会话、队列 |
MySQL 官方说它是使用最广的开源 SQL 数据库管理系统,由 Oracle 开发、分发和支持,并以 GPL 许可证发布,可以免费下载和使用[1]。
MariaDB 官方在文档里把 MySQL 称作前身,把两者放在同一段历史里叙述[3]。实际选哪个,往往不取决于偏好,而取决于主机预装了哪一个。WordPress 官方给出的清单是 MySQL 8.0 以上,或 MariaDB 10.11 以上[6]。
PostgreSQL 官方把它定义为对象关系型数据库管理系统,支持复杂查询、外键、触发器与事务完整性,并且因为许可证宽松,可以免费用于任何用途[4]。查询逻辑重、又不想被单一厂商绑住的站点,往往选它。
Redis 官方把用途写成缓存、主库、向量库或自定义数据库[5]。它把数据放在内存里,读写快,常见用法是给页面或查询结果做一层缓存。
第三方排行给出的位置是,2026 年 10 月 MySQL 排第 2,PostgreSQL 排第 4,Redis 排第 8,MariaDB 排第 13[11]。
查询变慢如何拖累抓取
抓取是收录的第一步,百度把收录概括为“从互联网抓取网页、建立索引数据库、将索引库中数据展现给用户”[10]。数据库就在这条链路的前端:查询占用的时间,直接算进页面的首字节时间。
Google 说明,抓取容量上限随站点响应状况升降,响应快时上限升高,变慢或出现服务器错误时上限下降[7]。它给出的两条优化建议也很直白:服务器响应更快,它或许能抓取更多网页;提高网页加载速度,就能间接提高抓取效率[7]。
百度把抓取频次的调整依据写成两项:内容更新频率与服务器压力[9]。
最坏的情况是查询堆积,把服务器拖到返回 5xx。Google 对此给出的应急办法是,暂时返回 503 或 429 让抓取放慢;连续几天返回这类状态码,会导致它永久降低抓取速度,甚至把网址从索引里移除[7]。5xx 这类服务器错误也被单独列为一类抓取问题[8]。
找到慢查询要用慢查询日志。MySQL 官方说明,一条语句执行超过 long_query_time 秒,就会被写进慢查询日志;默认阈值是 10 秒,日志默认关闭;日志内容可以用 mysqldumpslow 汇总[2]。
-- 打开慢查询日志,并把阈值降到 0.5 秒
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 0.5;
拿到慢查询之后的处理顺序,通常是这几步:
- 给查询条件用到的字段补上索引;
- 减少同一次请求里的查询次数;
- 把反复执行的查询结果放进缓存;
- 把读多写少的查询交给 Redis 一类内存库处理[5]。
自建与托管的取舍
多数站长不用自己装数据库,主机面板里建一个库、填好账号密码就能用。托管的好处是备份、监控与版本升级都有服务方负责。
自建的好处是参数可调,版本与扩展由自己决定。代价是备份与恢复要自己安排,参数改错会拖慢整站,出问题时还得能看懂查询计划。
数据库与网页程序通常装在同一台机器上,抢内存是常见现象。流量上来之后,把数据库挪到另一台机器,或者直接买云数据库,是常见的下一步。
版本要跟着程序走。WordPress 已经把要求写在清单里,数据库要 MySQL 8.0 以上或 MariaDB 10.11 以上,PHP 要 8.3 以上[6]。
常见误用
一种误用是只凭感觉调优,不打开慢查询日志,也就无从知道是哪几条语句在拖时间[2]。
另一种误用是缓存时间设得过长,内容更新之后页面长时间不刷新,爬虫抓到的一直是旧版本。
还有一种误用是只用 Redis,不做持久化与备份。官方把 Redis 定位成缓存,也可以当主库用[5];选了后者,就得自己把数据落盘与备份安排上。
最后一种误用是以为数据库慢直接导致排名下降。排名由内容与抓取结果决定,数据库只影响服务器能不能稳定、快速地响应[7]。
附录
参见
参考资料
官方(境外)
- 《What is MySQL?》,Oracle,MySQL 8.4 参考手册。
- 《The Slow Query Log》,Oracle,MySQL 8.4 参考手册。
- 《Documentation》,MariaDB Foundation。
- 《What Is PostgreSQL?》,PostgreSQL 全球开发组。
- 《Welcome to Redis Docs》,Redis。
- 《Requirements》,WordPress。
- 《面向大型网站所有者的抓取预算管理指南》,Google 搜索中心。
- 《HTTP 状态代码以及网络连接错误和 DNS 错误对 Google 搜索有何影响》,Google 搜索中心。
官方(国内)
- 《平台工具使用手册(抓取频次)》,百度搜索资源平台,2020-08-14 更新。
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
第三方
- 《DB-Engines Ranking》,DB-Engines,2026-10。
外部链接
无。