WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化
今天明月给大家分享一下 WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化,无论你的站点采用是 WordPress 还是 Typecho,都要用到 MySQL/MariaDB 数据库,我们以 MySQL 为主(MariaDB 其实跟 MySQL 基本没啥大的区别,所以同样都适用。)给大家讲解一下数据库的优化。

在【WordPress 到底能不能承受百万级内容?】一文里,明月给大家讲过 WordPress 网站系统能处理的内容数量其实是取决于 MySQL 的部署的,可见 MySQL 数据库对于 WordPress 站点的重要性,加上目前大部分的 WordPress 站点数据库都是以本地部署(localhost,也就是数据库和网站在同一个服务区上)的形式使用的,所以优化 MySQL 就更加的必不可少了,结合明月多年代维的经验总结出如下几条 MySQL 数据库优化的建议:
一、关闭 MySQL 的日志
MySQL 中的 binlog 日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是 binlog 也会日渐增大,占用很大的磁盘空间,同时还会带来一定的 I/O 压力,理论上来说只要我们不使用 MySQL 的主从复制基本很少用到 binglog 日志,所以一般明月都会建议关闭 MySQL 的日志,只需要把 /etc/my.cnf 文件里:
log-bin=mysql-bin
binlog_format=mixed
这两行给注释掉即可,如下图所示:
#log-bin=mysql-bin
#binlog_format=mixed
然后保存退出,重启 MySQL 进程就行了。
注意,当你要使用 MySQL 的主从复制的时候一定要记得开启 MySQL 日志哦!
二、开启 MySQL 的查询缓存
MySQL 和 MariaDB 都是支持“查询缓存”功能,并且启用 MySQL 查询缓存可以极大地减低数据库服务器的 CPU 使用率,实际使用情况是:开启前 CPU 使用率 120%左右,开启后降到了 10%。具体开启方法可以参考【启用 MySQL 和 MariaDB 查询缓存】一文,需要注意的是这个方法适合没有使用 Memcached、Redis 缓存数据库查询的时候使用,否则就重复了,一定要注意哦,跟下面讲的第四条冲突了,比较适合熟悉 MySQL 命令的运维人员使用,配合下面第三条效果更加,安全性也更好。建议大家根据自己服务器部署和使用情况灵活的选择和使用。
三、调整数据库 InnoDB 存储引擎的关键参数
一般我们的 MySQL 数据库在编译安装部署的时候都会让选择数据库存储引擎,比较多的选择是 InnoDB 存储引擎,这时候我们就可以在/etc/my.cnf 文件里调整 innodb_buffer_pool_size 和 innodb_buffer_pool_instances 参数来优化 MySQL 的性能。
Innodb_buffer_pool_size
innodb_buffer_pool_size 是 InnoDB 存储引擎的关键参数,用于配置 InnoDB 缓冲池的大小。
默认大小为 128M,但您应该根据服务器的物理内存进行调整。
在专用数据库服务器上,可以将缓冲池大小设置为服务器物理内存的 80%。
可以动态设置,允许在不重新启动服务器的情况下调整缓冲池的大小。
Innodb_buffer_pool_instances
innodb_buffer_pool_instances 是用于配置多个缓冲池实例的参数。
默认情况下,它设置为 1,表示只有一个缓冲池实例。
当缓冲池大小大于 1G 时,将innodb_buffer_pool_instances设置为大于 1 的值可以提高服务器的可扩展性。
大的缓冲池可以减小多次磁盘 I/O 访问相同的表数据。
配置示例
假设您的服务器物理内存足够,您可以设置innodb_buffer_pool_size为 1G,并将innodb_buffer_pool_instances设置为 1。
请注意,innodb_buffer_pool_size必须是innodb_buffer_pool_instances的倍数。
在线调整
您可以使用以下语句在线调整 InnoDB 缓冲池大小:
SET GLOBAL innodb_buffer_pool_size=3221225472;--设置为 3G
监控在线缓冲池调整进度:
SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status';
性能验证
您可以通过分析 InnoDB 缓冲池的性能来验证配置是否合适。
计算 InnoDB 缓冲池命中率:
Performance=innodb_buffer_pool_reads/innodb_buffer_pool_read_requests*100
如果命中率低于 99%,可以考虑增加innodb_buffer_pool_size。
可见 innodb_buffer_pool_size 和 innodb_buffer_pool_instances 参数的调整是要根据实际调试来选择的,比较适合专业运维人员选择使用,新手可以根据服务器物理内存大小适当的加大 innodb_buffer_pool_size 参数即可,
四、使用 Memcached 把数据库查询放到内存中
Memcached 其实是非常适合 LNMP 环境的站点服务器使用的,主要原因就是其简单高效的内存利用率了,这正是我们需要的,也是 Memcached 加速原理的主要表现了。Memcached 就是把需要 CPU 计算的重复性的东西都有序的保存在物理内存里以实现可以被最快的速度重复调用,让 CPU 能有更多空闲时间处理其他的运算请求,所谓的加速其实就是体现在这里而已,说白了 Memcached 是变相的给 CPU 加速了,知道 Memcached 这个原理其实就足够了。
同时,明月要再次强调一下,像我们这种站点服务器使用 Memcached 就足够了,真心没有必要选择 Redis 的,因为 Redis 更多的时候比较适用于独立数据库服务器或者集群数据库服务器上使用,具体可以参考【理智冷静的使用 Memcached 或者 Redis】一文,有专门详细的论述。
五、搭建数据库专用服务器或者云数据库
如果你的 WordPress 站点需要处理十万、百万级的内容量就要像【WordPress 到底能不能承受百万级内容?】一文里说的,必须搭建一个或者 N 个独立的数据库服务器,每个独立的数据库服务器都充分的利用物理内存缓存查询记录再通过内网跟网站服务器通信实现数据库主从复制和负载均衡来缓解数据库的实时查询压力,基本上这种部署都属于是企业级的了,成本和维护压力也是很大的,比较适合拥有专业的运维技术团队了,就不属于是咱们个人网站的范畴了。
其实 MySQL 数据库的优化无非就是缓存数据库查询记录到 Linux 物理内存里,减少 MySQL 实时查询的频率,对于我们很多个人博客站点来说,512MB 物理内存基本就可以缓存 99%以上的 MySQL 实时查询记录了,更多的时候往往都是用不完,除非你用的插件、主题里有频繁的数据库读写操作才会造成 MySQL 负载飙升的现象,所以慎用来历不明和不负责任的插件和主题也是优化数据库性能要考虑的。
相关文章:
WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化
今天明月给大家分享一下 WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化,无论你的站点采用是 WordPress 还是 Typecho,都要用到 MySQL/MariaDB 数据库,我们以 MySQL 为主(MariaDB 其实跟 MySQL 基本没啥大的区别࿰…...
==与===的区别
在许多编程语言和脚本语言中,包括 JavaScript 和 PHP 等, 和 是用于比较值的操作符。 “” 是相等运算符,用于比较两个值是否相等。它比较值时会进行类型转换,如果两个值在类型转换后相等,那么它们就被认为是相等的。…...
什么是ACID及基本实现的示例
什么是ACID特性 ACID 是一个缩写词,代表数据库事务的四个关键特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。这些…...
【启明智显技术分享】SSD202核心板Rootfs下如何烧录mac地址
提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…...
springboot3 集成spring-authorization-server (一 基础篇)
官方文档 Spring Authorization Server 环境介绍 java:17 SpringBoot:3.2.0 SpringCloud:2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…...
AVL树!
文章目录 1.AVL树的概念2.AVL树的插入和旋转3.AVL树的旋转3.1旋转的底层:3.2 右旋转3.3 左旋转3.4 双旋 4.AVL树的底层 1.AVL树的概念 当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整)&a…...
知识付费系统怎么安装教程,教师课堂教学该掌握哪些表达技巧?
课堂教学语言表达是教学艺术的一个基本且重要的组成部分。教师向学生传道、授业、解惑以及师生之间信息的传递和情感的交流,都离不开运用教学语言这一有力的工具,在课堂上,教师通过情趣盎然的表述,鞭辟入里的分析,恰到…...
基于MetaGPT的LLM Agent学习实战(一)
前言 我最近一直在做基于AI Agent 的个人项目, 因为工作加班较多,设计思考时间不足,这里借着Datawhale的开源学习课程《MetaGPT智能体理论与实战》课程,来完善自己的思路,抛砖引玉,和各位开发者一起学习&am…...
【IMX6ULL项目】IMX6ULL上Linux系统实现产测工具框架
电子产品量产测试与烧写工具。这是一套软件,用在我们的实际生产中, 有如下特点: 1.简单易用: 把这套软件烧写在 SD 卡上,插到 IMX6ULL 板子里并启动,它就会自动测试各个模块、烧写 EMMC 系统。 工人只要按…...
【Linux基础】Vim保姆级一键配置教程(手把手教你把Vim打造成高效率C++开发环境)
目录 一、前言 二、安装Vim 三、原始Vim编译器的缺陷分析 四、Vim配置 🥝预备知识----.vimrc 隐藏文件 🍋手动配置 Vim --- (不推荐) 🍇自动化一键配置 Vim --- (强烈推荐) ✨功能演示 五、共勉 一、前言 Vim作为…...
Gartner发布准备应对勒索软件攻击指南:勒索软件攻击的三个阶段及其防御生命周期
攻击者改变了策略,在某些情况下转向勒索软件。安全和风险管理领导者必须通过提高检测和预防能力来为勒索软件攻击做好准备,同时还要改进其事后应对策略。 主要发现 勒索软件(无加密的数据盗窃攻击)是攻击者越来越多地使用的策略。…...
IB 公式解析
IB损失 自我感悟 根据对决策边界的影响程度来分配权重。影响程度越大,分配到的权重越小;影响程度越小,分配到的权重越大。 最后其实就是平衡因子和交叉熵损失的输出的乘积 公式 3.2. Influence Function 影响函数允许我们在移除样本时估…...
开发辅助工具的缩写
开发辅助工具的缩写有很多,这些工具通常是为了提高软件开发效率、代码质量和团队协作效率而设计的。以下是一些常见的开发辅助工具及其缩写: IDE - Integrated Development Environment(集成开发环境) VCS - Version Control Sys…...
linux程序分析命令(一)
linux程序分析命令(一) **ldd:**用于打印共享库依赖。这个命令会显示出一个可执行文件所依赖的所有共享库(动态链接库),这对于解决运行时库依赖问题非常有用。**nm:**用于列出对象文件的符号表。这个命令可以显示出定…...
MYSQL数据库-SQL语句
数据库相关概念 名称全称简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Quer…...
MyBatis认识
一、定义 MyBatis是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java O…...
【WEEK11】 【DAY6】Employee Management System Part 7【English Version】
2024.5.11 Saturday Continued from 【WEEK11】 【DAY5】Employee Management System Part 6【English Version】 Contents 10.8. Delete and 404 Handling10.8.1. Modify list.html10.8.2. Modify EmployeeController.java10.8.3. Restart10.8.4. 404 Page Handling10.8.4.1. …...
【52】Camunda8-Zeebe核心引擎-Clustering与流程生命周期
Clustering集群 Zeebe本质是作为一个brokers集群运行,形成一个点对点网络。在这个网络中,所有brokers的功能与服务都相同,没有单点故障。 Gossip协议 Zeebe实现了gossip协议,并借此知悉哪些broker当前是集群的一部分。 集群使用…...
从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习
jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…...
图文并茂:解析Spring Boot Controller返回图片的三种方式
欢迎来到我的博客,代码的世界里,每一行都是一个故事 图文并茂:解析Spring Boot Controller返回图片的三种方式 前言使用Base64编码返回图片使用byte数组返回图片使用Resource对象返回图片图片格式转换与性能对比 前言 在互联网的世界里&…...
无王无帝定乾坤,来自田间第一人 凰标为律正人心
无王无帝定乾坤,来自田间第一人。 世间最大的乱象,从来不止山河动荡、世道纷争,更是人心失序、良知蒙尘。一、旧世千年:王权为纲,律法为束旧制之弊具体表现规则来源由权贵制定,标准随权势偏移治理逻辑重压制…...
模仿学习新思路:拆解ACT算法中的CVAE与Transformer如何联手生成平滑动作序列
模仿学习新范式:ACT算法中CVAE与Transformer的协同进化 在机器人精细操作领域,如何生成连贯平滑的动作序列一直是核心挑战。斯坦福ALOHA团队提出的动作分块算法ACT(Action Chunking with Transformers)通过融合条件变分自编码器&…...
LizzieYzy:围棋AI分析工具的三大突破,让你拥有职业棋手的复盘能力
LizzieYzy:围棋AI分析工具的三大突破,让你拥有职业棋手的复盘能力 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 还记得上次输掉一盘棋后,你花了多少时间复盘寻…...
HPM6750 RISC-V高性能MCU开发实战:从双核应用到图形加速
1. 项目概述与核心价值最近几年,RISC-V架构在嵌入式领域的声量越来越大,从最初的学术研究到如今在工业控制、边缘计算等场景的落地,生态的成熟度肉眼可见。作为一名长期混迹在嵌入式开发一线的工程师,我对于新架构、新平台总是抱有…...
2025届必备的五大AI辅助论文助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下人工智能范畴里身为重要参与者的DeepSeek,它所产出的论文常常展现出严谨的…...
别再手动reshape了!用einops.rearrange优雅处理PyTorch张量维度(附实战代码)
用einops.rearrange重塑PyTorch张量:告别混乱的维度操作 深度学习开发中最令人头疼的莫过于张量维度的变换。你是否曾在凌晨三点盯着屏幕,试图理解自己昨天写的permute和reshape组合到底在做什么?或者花费半小时调试一个维度不匹配的错误&…...
【亲测免费】 sapi5.inf下载 - 解决微软语音注册表问题 0x80040154
sapi5.inf下载 - 解决微软语音注册表问题 0x80040154 【下载地址】sapi5.inf下载-解决微软语音注册表问题0x80040154 sapi5.inf下载 - 解决微软语音注册表问题 0x80040154如果你在进行语音应用开发或者配置微软语音引擎时遇到了著名的错误代码0x80040154,这个资源正…...
【亲测免费】 ImageNet标签文件及读取脚本:加速您的计算机视觉研究
ImageNet标签文件及读取脚本:加速您的计算机视觉研究 【下载地址】ImageNet标签文件及读取脚本 ImageNet 标签文件及读取脚本 项目地址: https://gitcode.com/open-source-toolkit/56c9e 项目介绍 在计算机视觉领域,ImageNet数据集是图像分类任务…...
告别轮询!STM32CubeMX配置DMA串口收发485数据,并详解HAL库回调函数使用避坑
STM32CubeMX实战:DMA驱动RS485通信与HAL库回调机制深度解析 当我们需要在工业环境中实现稳定可靠的串行通信时,RS485总线因其抗干扰能力强、传输距离远等优势成为首选。而STM32系列MCU配合HAL库的开发模式,能够显著提升开发效率。本文将彻底改…...
状态机——枚举实现简单状态机
枚举实现简单状态机1、业务场景:订单状态流转2、代码实现3、上下文对象(Context)4、测试运行5、总结在 Java 中,使用枚举(Enum)来实现状态机(State Machine)是一种非常优雅且高效的做…...
