建站选哪种数据库?先把这几类分清

给站点挑数据库这事,说大不大,说小也不小。新手最容易犯的毛病,是听人说哪个快就往上装哪个,把 WordPress 硬拽到 PostgreSQL 上,或者把几万条文章塞进 SQLite,最后卡在半路回头重做。我的习惯是先把数据库分成几大类,再看自家站点属于哪种需求,对号入座就行。这篇不玩虚的,按 CMS、单机小工具、复杂查询、缓存这几条线说清该选什么,顺带把内存量级、备份命令和面板里的位置一并交代,最后讲讲换库到底要掉多少头发。

数据库选型

先把数据库分成几大类,对号入座就不迷糊

现实里常见的数据库就那么几类,关系型的有 MySQL、MariaDB、PostgreSQL 和 SQLite,键值型的有 Redis,文档型的有 MongoDB。做站九成的场景都落在关系型和键值型这两类里,剩下的多半是听着热闹。判断标准我给三条:数据结构是不是固定的表格式、并发读写量大不大、要不要复杂查询和事务。三条答完,基本就知道该上哪个了。别小看这一步,选型错了后面全是补丁,改起来比重装还累。

WordPress 和大多数 CMS:老实上 MySQL 或 MariaDB

WordPress、Typecho、Discuz 这类程序,官方支持的数据库就是 MySQL 系,MariaDB 是它的兼容分支,配置写法几乎一样。装完程序后,根目录的 wp-config.php 里填上 DB_NAME、DB_USER、DB_PASSWORD、DB_HOST 四项就能连上,宝塔面板这类环境在软件商店点一下就把库装好了,不用自己编译。绝大多数 CMS 的建站教程都是围绕 MySQL 写的,遇到问题一搜就有答案,这才是真正省事的地方,别为了显得高级去换冷门库。

这里有个必须提前知道的分水岭:MySQL 5.7 的默认排序规则是 utf8mb4_general_ci,到了 8.0 变成了 utf8mb4_0900_ai_ci。从 5.7 导出数据再导进 8.0,如果建库时没显式指定字符集和排序规则,两张表做关联查询就可能报排序规则不一致的错,看着像程序坏了,其实只是库没对齐。我的做法是老站迁移一律把字符集和排序规则跟源库写成一样,别偷懒吃默认值。

单机小站、本地工具:SQLite 就够了

SQLite 严格说是嵌入式数据库,整个库就是一个文件,通常以 .db 或 .sqlite 结尾,没有独立服务进程,也不占端口。个人博客访问量很低、内网小工具、本地调试环境、桌面软件的存储层,用它都特别舒服,备份直接把文件复制走就算完,PHP 侧只要装了 pdo_sqlite 扩展就能读写。短板也明显:写操作是整库加锁,多个进程同时写会排队甚至报 database is locked,所以并发一上来就得换人,别硬扛。

查询复杂、要玩 JSON 字段:PostgreSQL 更趁手

PostgreSQL 的强项在复杂查询和数据类型,窗口函数、公共表表达式、JSONB 字段加索引、全文检索这些它做得都很扎实。站点要是带多条件筛选、统计报表、订单对账,或者字段结构不固定又想查得快,它比 MySQL 顺手得多。代价是生态偏后端:WordPress 官方并不支持它,能直接用的 CMS 少了一大截;面板上的安装位置和 MySQL 类似,默认端口是 5432,装完一样要在数据库菜单里建库建用户。

缓存和会话别硬塞数据库:交给 Redis

Redis 是内存里的键值库,主打读写快,拿来当对象缓存、会话存储、消息队列、访问计数和限流都合适。WordPress 站装个对象缓存插件,把 object-cache.php 丢进 wp-content 目录,页面生成时那些重复查询就能直接从内存取;PHP 的会话也可以交给它管,多台机器共享登录态特别省心。但记住一条红线:Redis 不是主库的替代品,订单、文章这类丢了要命的数据别只放它里面。安全上也别大意,监听地址限定 127.0.0.1,密码设上,6379 端口千万别直接暴露到公网。

各类型吃多少内存?给个大致量级

内存这块我只给大致量级,具体看版本和参数,以自己机器上的监控为准。MySQL 或 MariaDB 空载一般在三四百兆到五百兆这个区间,连接数和缓冲池加上去还会涨,缓冲池参数常按可用内存的一半给;PostgreSQL 空载大概一两百兆,shared_buffers 默认偏保守,跑起来再加;Redis 空载只有几兆到几十兆,但数据全放内存,键一多就线性涨;SQLite 没有常驻进程,几乎可以忽略。所以 1G 内存的小机器上同时装 MySQL 加 Redis 会明显吃紧,2G 起步才比较从容。

宝塔面板里一键安装和建库,位置就那几处

用面板的朋友,路径记好就不会迷路。装库在软件商店里搜 MySQL、MariaDB、PostgreSQL、Redis,点安装即可,编译安装慢但稳,急速安装快;装完在左侧数据库菜单点添加数据库,填库名、用户名、密码,字符集选 utf8mb4,顺手把用户名密码记下来,后面写配置文件要用;phpMyAdmin 或 phpPgAdmin 也在软件商店装,装好后从数据库列表点管理就能进网页版管理界面。Redis 装完记得进设置改端口和密码,配置文件一般在 /www/server/redis/redis.conf。还有一点,别在面板外手动编译装同一个库,端口和目录打架特别难查。

备份命令记牢:mysqldump、pg_dump 和 Redis 那两套

备份是保命技能,命令其实就那几条。MySQL 系用 mysqldump -u root -p –single-transaction –databases 库名 > /root/backup.sql,恢复是 mysql -u root -p 库名 < /root/backup.sql;PostgreSQL 用 pg_dump -U postgres -Fc 库名 > /root/backup.dump,恢复走 pg_restore -U postgres -d 库名 /root/backup.dump。这两条记不住就抄进笔记,导出之前先瞄一眼磁盘剩余空间,别导到一半卡住。

Redis 的备份分两条路:RDB 快照敲 redis-cli bgsave,落地的文件就是 dump.rdb,出事拿它恢复即可;AOF 得先在配置里写上 appendonly yes,再执行 redis-cli bgrewriteaof,日志细、丢数据少,代价是占点磁盘。实在懒得配,就定时把 dump.rdb 复制一份走。面板的计划任务里也能建定时备份,比手工敲稳当,两边都配上更安心。

以后想换库?先把迁移成本算清楚

换库成本差别非常大。MySQL 换 MariaDB、5.7 升 8.0 属于同族迁移,mysqldump 导出再导入基本就能收工,主要的坑是排序规则和严格模式;MySQL 换 PostgreSQL 就相当于重写,自增主键、反引号、日期函数、分页写法全得改,程序层还要换驱动,工作量按天算;SQLite 升成 MySQL 要按表搬数据,字段类型也得重映射一遍;想拿 Redis 顶替主库基本不现实,它只适合做旁路缓存。所以我的建议特别朴素:选型时多花半小时想清楚,别等上线半年再折腾。

把话收一收:WordPress 和绝大多数 CMS 就选 MySQL 或 MariaDB,建库时把字符集和排序规则显式写清楚;单机小站和本地工具用 SQLite,备份就是拷文件;要复杂查询和 JSON 字段就上 PostgreSQL;缓存与会话交给 Redis,但它不能当主库。内存量级心里有个数,备份命令存进笔记,换库成本提前掂量。选型这一步多花点时间,后面几年都省心,这才是老站长该打的算盘。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
爱家的头像爱家
SSL证书验证失败?按顺序逐项排查
上一篇 2026-09-14 02:26
织梦网站后台管理系统如何快速搭建并优化管理流程?
下一篇 2025-10-22 15:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信