MySQL 数据库优化

腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化 MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务型)、存在多个分支、读写效率瓶颈等问题。 所以如何用好MYSQL变得至关重要,一方面需要通过MYSQL优化找出系统读写瓶颈,提高数据库性能;另一方面需要合理涉及数据结构、调整参数,以提高用户操作响应;同时还有尽可能节省系统资源,以便系统可以提供更大负荷的服务。本文将为大家介绍腾讯云团队是如何对M 阅读详情

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

1、优化一览图在这里插入图片描述
2、优化

笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.

2.1 软优化

2.1.1 查询语句优化

1、首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息.

2.例:

	DESC SELECT * FROM `user`

在这里插入图片描述
其中会显示索引和查询数据读取数据条数等信息.

2.1.2 优化子查询

在MySQL中,尽量使用JOIN来代替子查询.因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高.

2.1.3 使用索引

索引是提高数据库查询速度最重要的方法之一,关于索引可以参高笔者<MySQL数据库索引>一文,介绍比较详细,此处记录使用索引的三大注意事项:

1、LIKE关键字匹配’%'开头的字符串,不会使用索引.

2、OR关键字的两个字段必须都是用了索引,该查询才会使用索引.

3、使用多列索引必须满足最左匹配.

2.1.4 分解表

对于字段较多的表,如果某些字段使用频率较低,此时应当,将其分离出来从而形成新的表,

2.1.5 中间表

对于将大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时.

2.1.6 增加冗余字段

类似于创建中间表,增加冗余也是为了减少连接查询.

2.1.7 分析表,检查表,优化表

分析表主要是分析表中关键字的分布,检查表主要是检查表中是否存在错误,优化表主要是消除删除或更新造成的表空间浪费.

1、分析表: 使用 ANALYZE 关键字,如ANALYZE TABLE user;
在这里插入图片描述
Op:表示执行的操作.

Msg_type:信息类型,有status,info,note,warning,error.

Msg_text:显示信息.

2、检查表: 使用 CHECK关键字,如CHECK TABLE user [option]

option 只对MyISAM有效,共五个参数值:

QUICK:不扫描行,不检查错误的连接.

FAST:只检查没有正确关闭的表.

CHANGED:只检查上次检查后被更改的表和没被正确关闭的表.

MEDIUM:扫描行,以验证被删除的连接是有效的,也可以计算各行关键字校验和.

EXTENDED:最全面的的检查,对每行关键字全面查找.

3、优化表:使用OPTIMIZE关键字,如OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user;

LOCAL|NO_WRITE_TO_BINLOG都是表示不写入日志.,优化表只对VARCHAR,BLOB和TEXT有效,通过OPTIMIZE TABLE语句可以消除文件碎片,在执行过程中会加上只读锁.

2.2 硬优化

2.2.1 硬件三件套

1、配置多核心和频率高的cpu,多核心可以执行多个线程.

2、配置大内存,提高内存,即可提高缓存区容量,因此能减少磁盘I/O时间,从而提高响应速度.

3、配置高速磁盘或合理分布磁盘:高速磁盘提高I/O,分布磁盘能提高并行操作的能力.

2.2.2 优化数据库参数

优化数据库参数可以提高资源利用率,从而提高MySQL服务器性能.MySQL服务的配置参数都在my.cnf或my.ini,下面列出性能影响较大的几个参数.

key_buffer_size:索引缓冲区大小

table_cache:能同时打开表的个数

query_cache_size和query_cache_type:前者是查询缓冲区大小,后者是前面参数的开关,0表示不使用缓冲区,1表示使用缓冲区,但可以在查询中使用SQL_NO_CACHE表示不要使用缓冲区,2表示在查询中明确指出使用缓冲区才用缓冲区,即SQL_CACHE.

sort_buffer_size:排序缓冲区

传送门:更多参数

https://www.mysql.com/cn/why-mysql/performance/index.html

2.2.3 分库分表

因为数据库压力过大,首先一个问题就是高峰期系统性能可能会降低,因为数据库负载过高对性能会有影响。另外一个,压力过大把你的数据库给搞挂了怎么办?所以此时你必须得对系统做分库分表 + 读写分离,也就是把一个库拆分为多个库,部署在多个数据库服务上,这时作为主库承载写入请求。然后每个主库都挂载至少一个从库,由从库来承载读请求。

在这里插入图片描述
2.2.4 缓存集群

如果用户量越来越大,此时你可以不停的加机器,比如说系统层面不停加机器,就可以承载更高的并发请求。然后数据库层面如果写入并发越来越高,就扩容加数据库服务器,通过分库分表是可以支持扩容机器的,如果数据库层面的读并发越来越高,就扩容加更多的从库。但是这里有一个很大的问题:数据库其实本身不是用来承载高并发请求的,所以通常来说,数据库单机每秒承载的并发就在几千的数量级,而且数据库使用的机器都是比较高配置,比较昂贵的机器,成本很高。如果你就是简单的不停的加机器,其实是不对的。所以在高并发架构里通常都有缓存这个环节,缓存系统的设计就是为了承载高并发而生。所以单机承载的并发量都在每秒几万,甚至每秒数十万,对高并发的承载能力比数据库系统要高出一到两个数量级。所以你完全可以根据系统的业务特性,对那种写少读多的请求,引入缓存集群。具体来说,就是在写数据库的时候同时写一份数据到缓存集群里,然后用缓存集群来承载大部分的读请求。这样的话,通过缓存集群,就可以用更少的机器资源承载更高的并发。
在这里插入图片描述
结语

一个完整而复杂的高并发系统架构中,一定会包含:各种复杂的自研基础架构系统。各种精妙的架构设计.因此一篇小文顶多具有抛砖引玉的效果,但是数据库优化的思想差不多就这些了.

MySQL数据库优化 目录 前言 一、数据库优化 1、数据库优化的必要性 2、数据库优化的几个方面 二、数据库优化方式 1、库表设计 1.1 标识实体关系 1.2 实体关系 1.3E-R图,实体-联系图 2、库表添加合适的索引 2.1索引分类 2.2 创建索引 3、分表 4、读写分离 5、存储过程与触发器 6、SQL优化与慢查询 6.1 数据库的增删改查 6.2 show status的相关常用命令 6.3 启动MqSql使用记录慢查询日志(2种) 6.4 expla... 阅读详情

相关推荐

PySpark 本地开发环境搭建与实践

本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。

天冬忘忧的博客 3012

sql:mysql:数据库优化

前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览图 2. 优化 笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置. 2.1 软优化 2.1.1 查询语句优化 1.首先我...

不花的花和尚的博客 1095

TensorRT(C++)部署 Pytorch模型

众所周知,python训练pytorch模型得到.pt模型。但在实际项目应用中,特别是嵌入式端部署时,受限于语言、硬件算力等因素,往往需要优化部署,而tensorRT是最常用的一种方式。本文以yolov5的部署为例,说明模型部署在x86架构上的电脑端的流程。(部署在Arm架构的嵌入式端的流程类似)。

女神sha手的博客 5405

9. MySql高级之SQL优化

文章目录MySql高级之SQL优化1. 大批量插入数据1.1 主键顺序插入插入ID顺序排列数据插入ID无序排列数据1.2 关闭唯一性校验1.3 手动提交事务2. 优化insert语句3. 优化order by语句3.1 环境准备3.2 两种排序方式3.3 Filesort 的优化4. 优化group by 语句5. 优化嵌套查询6. 优化OR条件7. 优化分页查询7.1 优化思路一7.2 优化思路二8. 使用SQL提示8.1 USE INDEX8.2 IGNORE INDEX8.3 FORCE INDEX

weixin_45267102的博客 345

LoRaWAN数据包分析工具

前言:LoRaWAN的射频数据包是加密的,而且有些字段是某个字节的某几位,看着不是那么直观,因此在某些情况下需要借助工具来分析数据包。 1、安装npm 这个工具是用JavaScript写的,其中用到了一些依赖库,而npm就可以一次性把这些依赖库下载下来,因此我们先要下载安装npm这个工具。 安装:sudo apt install npm 输入y,等待安装完成: 检查是否安装成功:npm -v 说明安装完成。 2、安装LoRa数据包分析工具lora-packet 安装:npm i.

freemote的博客 4630

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。

王元笙 1万+

mysql检查表、分析表、优化表

对数据库的管理常规就是进行预防性的维护,以及修复那些出现问题的内容。进行检查和修复通常具有1. 对表进行优化2. 对表进行分析(分析并存储MyISAM和BDB表中键的分布)3. 对表进行检查(检查表的错误,并且为MyISAM更新键的统计内容)4. 对表进行修复(修复被破坏的MyISAM表)

睡不醒的每天 1027

特斯拉Model 3 BMS主控板拆解:从硬件设计到热管理策略的实战解析

本文深度拆解特斯拉Model 3的BMS主控板,解析其硬件架构与热管理协同策略。文章聚焦于主控板的分区布局、双核MCU的智慧分工,以及从被动监控到主动干预的热管理范式转变,揭示了特斯拉在高压安全、实时控制与系统级工程思维上的设计哲学。

zz67890的博客 594

MySQL中的分析表、检查表与优化表如何操作?

MySQL提供了分析表、检查表和优化表的语句。分析表主要是分析关键字的分布,检查表主要是检查表是否存在错误,优化表主要是消除删除或者更新造成的空间浪费。 # 【1】分析表 MySQL中提供了 ANALYZE TABLE 语句分析表,analyze table 语句的基本语法如下: ```sql analyze [local | no_write_to_binlog] table table_name[,tbl_name].... ``` 默认的,MySQL服务会将analyze table语句写到bi

小小默:进无止境 6441

【OpenClaw从入门到精通】第41篇:2026年4月最新版——从零开始搭建你的第一个安全AI助理(保姆级实战教程)

2026年3月CNCERT联合发布《OpenClaw安全使用实践指南》后,安全部署成为OpenClaw使用的核心前提。本文针对新手及进阶用户,基于官方安全指引,提供三套实战部署方案:阿里云一键部署(新手首选)、Docker容器隔离部署(进阶推荐)、本地安全安装(测试专用),并详解阿里云百炼Coding Plan API接入流程。全文涵盖环境准备、分步实操、安全加固、问题排查等全流程,所有命令可直接复制执行,无需依赖外部代码库。通过本文,读者可零基础搭建安全隔离的OpenClaw AI助理,兼顾实用性与安全性

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2199

《PLECS仿真与实战:从建模到高端应用》-专栏文件目录

《PLECS仿真与实战:从建模到高端应用》是一本系统介绍PLECS电力电子仿真软件的实用指南。全书共10章,首先介绍软件安装与基础操作,包括RC电路仿真等入门内容;随后深入讲解各类电力电子电路的建模与仿真,涵盖整流、交交变换、直流变换、逆变等电路;最后探讨PWM控制建模和直流调速系统等高端应用。书中配有丰富的示例程序和波形分析方法,附录还包含电力电子器件、代码生成等实用资料。该书适合电力电子领域工程师和学生系统学习电路仿真技术。

542

mysql 产生临时表的几种情况

1、UNION查询; 2、用到TEMPTABLE算法或者是UNION查询中的视图; 3、ORDER BY和GROUP BY的子句不一样时; 4、表连接中,ORDER BY的列不是驱动表中的; 5、DISTINCT查询并且加上ORDER BY时; 6、SQL中用到SQL_SMALL_RESULT选项时; 7、FROM中的子查询; 8、子查询或者semi-join时创建的表 semi-join: 所谓...

weixin_43726822的博客 4750

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1757

opencart mysql优化_opencart 数据库加速插件SD Premium DB Indexes – boost database

opencart 数据库加速插件SD Premium DB Indexes – boost database performance up to 50x官方购买的原版,官方会定期提供升级版本,528站长论坛也会定期更新最新版本。superdruid_premiumdbindexes_3-1.5.ocmod.zip3.0.0.0, 3.0.1.1, 3.0.1.2, 3.0.2.0superdrui...

weixin_35281210的博客 434

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Database】MySql优化初学

0.Purpose 合理安排资源、调整系统参数使MySQL运行更快、更节省资源。 优化是多方面的,包括查询、更新、服务器等。 原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。   1.How to Optimize from different Aspect?   1.1 Storage Engine(选择正确的存储引擎) 存储引擎 --- (影响) ---&gt; 插入数据速...

The Beginning 283

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

freeswitch 优化db mysql内存表_freeswitch 优化db

来自群 freeswitch-cn昆山+戴晓亮(272966) 14:13:51今天没事做给大家讲一下fs的优化fs运行的时候会生成一些db文件,是sqlite的,因为sqlite在高并发的状态下不行我以前是直接把这些文件放在ramdisk下面的,这样的确能够提高稳定性的,但是在超过200以上的并发,系统有时会出问题的所以我就把这些文件放在mysql里面跑 毕竟mysql不会出现锁的状态的http...

weixin_32312913的博客 475

ccmusic-database音乐流派分类Web应用:MySQL数据库设计与优化

本文介绍了如何在星图GPU平台自动化部署🎵音乐流派分类Web应用ccmusic-database/music_genre镜像,实现高效的音乐流派识别。该应用通过优化的MySQL数据库设计,能够快速处理用户上传的音频文件并返回分类结果,适用于音乐内容管理和智能推荐等场景。

weixin_35728286的博客 322

数据仓库中的sql性能优化(MySQL篇)

做数据仓库的头两年,使用高配置单机 + MySQL的方式来实现所有的计算(包括数据的ETL,以及报表计算。没有OLAP)。用过MySQL自带的MYISAM和列存储引擎Infobright。这篇文章总结了自己和团队在那段时间碰到的一些常见性能问题和解决方案。 P.S.如果没有特别指出,下面说的mysql都是指用MYISAM做存储引擎。 利用已有数据,避免重复计算 业务需求中往往有计算一周/一个...

码者人生的技术博客 1160

如何对Mysql数据库进行优化

数据库性能优化是一个持续的过程,它涉及到对数据库的各个方面进行调整以提高效率和响应速度。但要注意,索引虽然可以加快查询速度,但会降低更新表的速度,因为索引本身也需要维护。:硬件升级是提升数据库性能的直接方法,尤其是当数据库服务器的CPU或内存使用率持续高企时。:升级服务器的CPU、增加内存、使用更快的存储设备如SSD。:定期进行数据库维护,如优化表、清理碎片、更新统计信息等。:通过分库分表可以分散数据库负载,提高并发处理能力。:数据库分库分表、读写分离、使用缓存等。:定期维护可以帮助保持数据库性能。

weixin_73687229的博客 1176

MySQL数据库优化总结

概述:总体思路、导致慢SQL的原因;分析诊断工具;EXPLAIN执行计划;优化技巧;

lonelymanontheway的博客 646

MySQL 性能优化终极指南:db-tutorial 实战经验分享

想要让你的 MySQL 数据库运行如飞?作为最流行的开源关系型数据库,MySQL 性能优化是每个开发者必须掌握的技能。本指南将基于 db-tutorial 项目的实战经验,为你揭示 MySQL 性能优化的核心技巧和最佳实践。 ## 为什么需要 MySQL 性能优化? 在当今数据驱动的时代,数据库性能直接影响用户体验和业务发展。慢查询不仅会让用户等待,还会占用宝贵的服务器资源。通过合理的 MyS

gitblog_00890的博客 830

超详细MySQL数据库优化

前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览图 2. 优化 笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置. 2.1 软优化 2.1.1 查询语句优化 (1)首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息. (...

xiaodoudou的专栏 947

mysql数据库有什么优化方案

MySQL数据库的优化方案包括索引优化、查询优化、硬件优化、配置优化、分库分表优化等。其中,索引优化是最重要的一点。索引优化通过在表中建立适当的索引,可以显著提高查询速度。正确的索引策略能够减少数据扫描的范围,从而加快查询的执行速度。常见的索引类型包括主键索引、唯一索引、普通索引和全文索引。通过分析查询频率和数据分布情况,合理选择和设计索引,可以大幅度提升数据库性能。

2401_87878486的博客 1604

MySQL 数据库优化方案

定期使用ANALYZE TABLE和OPTIMIZE TABLE语句来分析和优化索引。垂直分表则是将表中字段按使用频率、业务模块等进行拆分,减少单个表的字段数量,提高查询效率。提升 MySQL 数据库的整体性能,减少查询响应时间,提高系统吞吐量,确保数据库能够高效稳定地支持业务运行。注意避免创建过多索引,因为索引也会占用额外的存储空间,并且在插入、更新和删除数据时会增加开销。通过分析执行计划,可以判断是否使用了合适的索引,是否存在全表扫描等问题。

qq_35800459的博客 1349

DataBase【MySQL优化技巧(上)】

🏆过年给领导送礼,领导说:人来了就行,拿啥东西!你怎么回复?

杂乱无章的记事本 664
上一篇: flume配置详解
下一篇: hive元数据表结构详情
Alwaysdazz
博客等级 码龄8年 24粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值