MySQL常见优化手段

MySQL/Oracle数据库优化总结(非常全面) 阅读详情
AI摘要

本文全面介绍了MySQL数据库的性能优化策略,包括配置优化、查询优化、数据库结构优化、系统硬件优化及监控维护。涵盖缓存设置、内存分配、索引设计、正规化与反正规化、磁盘I/O、内存与CPU升级、网络优化等关键环节。

1. 配置优化

1.1 缓存设置
  • 查询缓存:查询缓存可以显著减少对同一查询的重复执行次数。

    SET GLOBAL query_cache_size = 268435456;  -- 设置查询缓存大小为 256MB
    
    SET GLOBAL query_cache_type = ON;         -- 启用查询缓存
    

    例如,执行 SELECT * FROM users WHERE id = 1; 后,再次执行相同查询将直接从缓存中读取结果。

  • 表缓存:表缓存大小决定了可以同时打开的表数量。

    SET GLOBAL table_open_cache = 2000;  -- 设置表缓存大小为 2000
    
  例如,如果有大量并发查询访问不同的表,增大表缓存可以减少表打开和关闭的开销。

#### 1.2 内存分配
- **Innodb Buffer Pool**:用于缓存数据和索引,是 InnoDB 存储引擎的关键配置。
  ```sql
  SET GLOBAL innodb_buffer_pool_size = 1073741824;  -- 设置缓冲池大小为 1GB

例如,对于一个包含大量数据的表,增大 innodb_buffer_pool_size 可以减少磁盘 I/O,提高查询性能。

  • 临时表内存:临时表大小限制了内存中可以创建的临时表大小。
    SET GLOBAL tmp_table_size = 67108864;       -- 设置临时表大小为 64MB
    SET GLOBAL max_heap_table_size = 67108864;  -- 设置最大内存表大小为 64MB
    
    例如,在执行复杂查询(如 GROUP BY 或 ORDER BY)时,临时表可能会存储在磁盘中,通过增大这两个参数可以减少磁盘写入次数。
1.3 日志和同步设置
  • 二进制日志:二进制日志用于记录所有的写操作。

    SET GLOBAL sync_binlog = 1;  -- 每次写入事务提交后同步二进制日志
    

    例如,设置 sync_binlog = 1 确保每次事务提交后立即同步日志,提供最高数据安全性,但可能会影响性能。

  • InnoDB 日志:InnoDB 日志文件大小影响恢复速度和性能。

    SET GLOBAL innodb_log_file_size = 268435456;  -- 设置 InnoDB 日志文件大小为 256MB
    SET GLOBAL innodb_log_buffer_size = 8388608;  -- 设置 InnoDB 日志缓冲区大小为 8MB
    

    例如,较大的日志文件减少了日志文件切换的频率,从而提高了写入性能。

2. 查询优化

2.1 索引
  • 索引设计:为频繁查询的列创建索引。

    CREATE INDEX idx_users_email ON users(email);
    

    例如,执行 SELECT * FROM users WHERE email = 'example@example.com'; 时,索引 idx_users_email 可以显著提高查询速度。

  • 索引使用情况:使用 EXPLAIN 分析查询计划。

    EXPLAIN 
MySQL常见的几种优化方案 注:原始资料来自享学课堂,自己加上整理和思考 思考sql优化的几个地方,我把他做了个分类,方便理解 select [字段 优化1] from [表格 优化2] where [条件 优化3] union [联合查询 优化4] 新建表格 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(50) DEFAULT NULL COMMENT '姓名', 阅读详情

相关推荐

常用的MySQL 优化方法

数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷。

Java+GO+JS全栈工程师-鹤冲天的博客:编程辅导~商务合作~技术交流 2678

WPF MVVM实战:构建可绑定的RichTextBox富文本编辑器

本文详细介绍了如何在WPF MVVM模式下构建可绑定的RichTextBox富文本编辑器,解决标准RichTextBox.Document属性不支持数据绑定的问题。通过创建自定义BindableRichTextBox控件,实现FlowDocument的绑定支持,并分享插入图片、文本格式控制等实战技巧,帮助开发者高效开发富文本编辑功能。

weixin_33717117的博客 305

从PSDK到ROS节点:实战GPS数据发布与CMake配置

本文详细介绍了如何从大疆PSDK获取GPS数据并封装为ROS节点的实战过程,包括PSDK编译、GPS数据订阅、ROS节点实现及CMake配置优化。通过具体代码示例和调试技巧,帮助开发者快速实现无人机传感器数据与ROS系统的集成,提升开发效率。

weixin_30843605的博客 457

MySQL服务启动失败?手把手教你排查NET HELPMSG 3534错误(附完整修复流程)

本文针对Windows平台上MySQL服务启动失败并提示NET HELPMSG 3534错误的常见问题,提供了系统性的排查与修复指南。文章深入剖析了错误本质,并手把手教你通过查看MySQL错误日志、检查并初始化数据目录、修正Windows服务配置、排查my.ini配置文件陷阱等核心步骤,彻底解决这一棘手问题,帮助开发者和运维人员快速恢复数据库服务。

wdx0123456的博客 894

数据库:关系运算整理大全(包括关系代数、元组关系演算、域关系演算)

数据库关系运算: 1. 关系代数(基本关系代数、附加关系代数、扩展关系代数) 2. 元组关系演算 3. 域关系演算

ysji's blog 1万+

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

SAP-ABAP:SAP中如何查看系统表之间的关联关系?

在业务逻辑开发或者ALV开发过程中,我们通常要从系统中找出几个标准表之间的关联关系,有的是head与item,通过外键进行关联的关系。那么怎么去找到呢?以上就是具体如何产看系统表之间的关联关系的步骤,对于不同代码的业务顾问,也是必须要掌握的。

LinkStar的博客 2430

Jetson 平台编译安装 FFmpeg 7.1(支持 Nvmpi + SRT + x265)

摘要: 本文详细介绍了在NVIDIA Jetson平台上编译FFmpeg 7.1并集成关键功能的全过程。通过补丁方式加入Nvmpi实现硬件加速支持,同时编译集成x265编码器和SRT低延迟传输协议。步骤涵盖:1)安装x265编码器;2)配置SRT协议支持;3)编译jetson-ffmpeg的Nvmpi接口;4)定制化编译FFmpeg 7.1;5)验证模块集成情况。最终实现支持硬件编解码、高效HEVC压缩和可靠推流的增强版FFmpeg,为Jetson平台的音视频处理提供完整解决方案。

J。 345

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: asyncio.run asyncio.run_coroutine_threadsafe loop.run_until_complete create_task的区别
下一篇: Python request库简介与操作
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值