MySQL innoDB性能优化

MySQL之I/O配置与性能优化:InnoDB存储引擎的深度剖析 在学习和使用MySQL的过程中,我发现其I/O配置对数据库性能有着至关重要的影响,尤其是InnoDB存储引擎的I/O相关设置。深入研究这部分内容后,我收获了不少经验,今天就想和大家分享一下,希望能和大家一起学习进步,让我们在MySQL的性能优化上更上一层楼。 阅读详情

起因:有一个innoDB引擎的表Table,在一个大概3000次的foreach循环中执行

INSERT INTO Table(columnA, columnB) VALUES (valueA, valueB)


结果居然超出了60S的php执行限制(当然这个限制可以在php.ini中修改),让我很不解为何插入效率如此低下。

经过查找资料以及摸索,得到以下优化方法:

1、innoDB是mysql引擎中唯一支持事务transaction的引擎。默认所有用户行为都在事务内发生。
默认mysql建立新连接时,innoDB采用自动提交autocommit模式,每个SQL语句在它自己上形成一个单独的事务,即insert一次就commit了一次,InnoDB在该事务提交时必须刷新日志到磁盘,因此效率受限于磁盘读写效率。
你可以通过

mysql_query("SET AUTOCOMMIT = 0");


来关闭自动提交模式。

如 果自动提交模式被关闭,那么我们可以认为一个用户总是有一个事务打开着。一个SQL COMMIT或ROLLBACK语句结束当前事务并且一个新事务开始。两个语句都释放所有在当前事务中被设置的InnoDB锁定。一个COMMIT语句意 味着在当前事务中做的改变被生成为永久的,并且变成其它用户可见的。一个ROLLBACK语句,在另一方面,撤销所有当前事务做的修改。
当然如果是自动提交模式,通过用明确的START TRANSACTION或BEGIN语句来开始一个事务,并用COMMIT或者ROLLBACK语句来结束它,这样用户仍旧可以执行一个多重语句事务。

2、因此对于本例,在建立数据库连接后,立即关闭自动提交,在foreach循环结束后,一次commit即可,效率大大提升。

mysql_query("SET AUTOCOMMIT = 0");
foreach(***)
  INSERT INTO Table(columnA, columnB) VALUES (valueA, valueB)
mysql_query("commit");



3、对于多次insert行到同一表的需求,你还可以采用多行插入语法来减少客户端和服务器之间的通讯开支。
即

INSERT INTO Table(columnA, columnB) VALUES (1,2), (5,5), (3,3), ...



4、如果你的表有索引,索引会拖慢insert速度。大量插入数据时,可以先关闭索引,然后再重建索引。

ALTER TABLE Table DISABLE KEYS;
INSERT INTO ***;
ALTER TABLE Table ENABLE KEYS;


· 如果你在第二个键上有UNIQUE约束,你可以在导入会话中暂时关闭唯一性检查以加速表的导入:

SET UNIQUE_CHECKS=0;

对于大表,这节约了大量磁盘I/O,因为InnoDB可以使用它的插入缓冲来在一批内写第二个索引记录。

· 如果你对你的表有FOREIGN KEY约束,你可以在导入会话过程中通过关闭外键检查来提速表的导入:

SET FOREIGN_KEY_CHECKS=0;

对于大表,这可以节约大量的磁盘I/O。

· 如果你经常有对不经常更新的表的重发查询,请使用查询缓存:

[mysqld]
query_cache_type = ON
query_cache_size = 10M

 

mysql性能优化之innodb_buffer_pool_size 在查看mysql的配置文件my.ini时看到这俩个参数,于是研究了一下 # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and # row data. The bigger you set this the less disk I/O is needed to # access data in tables. O... 阅读详情

相关推荐

PointMLP实战:5分钟用PyTorch搭建点云分类模型(附GitHub代码)

本文提供了基于ICLR 2022论文PointMLP的点云分类模型实战教程。通过PyTorch框架,详细介绍了从环境搭建、数据预处理、模型架构解析到训练推理的全流程,并分享了性能调优技巧。该模型利用残差MLP模块构建,结构清晰高效,适合开发者快速上手并应用于实际点云处理项目。

r2s3t4的博客 215

mysql innodb 插入慢_MySQL InnoDB 插入数据慢解决办法

在my.ini中设置 innodb_flush_log_at_trx_commit 参数例如:innodb_flush_log_at_trx_commit=2原因:抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cach...

weixin_32287563的博客 815

Docker部署FRP实现内网穿透

FRP是一款开源内网穿透工具,通过在公网服务器部署服务端(FRPS),内网设备运行客户端(FRPC)实现外部访问。支持TCP、UDP、HTTP等多种协议。部署时需配置服务端(如群晖NAS使用Docker)和客户端(如Windows下载可执行文件)。服务端需设置监听端口、控制面板及Token认证,客户端需指定服务器地址和相同Token。完成配置后可通过公网IP或域名访问内网资源,并在控制面板监控连接状态。

波哥技术栈 1600

Mysql Innodb插入性能优化手记

今天优化数据库性能做了一天,最终效果还是非常满意的,插入数据从开始不到2000rec/s,最后达到3300rec/s。中间过程测试代码出了些问题,有些细节上的参数效果都没体现出来,但是最终结果速度明显提升应该是两个方面起的作用。 首先,我安装了innodb_plugin_1.0.15来代替了buildin innodb版本,这个性能上的直接变化我到时没注意,我主要...

weixin_33994429的博客 275

2026年AI技能进阶指南:从提示词工程到智能体开发实战

提示词工程作为AI时代的基础沟通技能,其核心原理是通过系统化的交互方法论实现与大模型的高效对话。这项技术通过明确性、具体性和可操作性的设计原则,显著提升了AI生成内容的质量和实用性。在工程实践层面,提示词工程已经发展出角色扮演、步骤分解等成熟模式,广泛应用于代码生成、技术方案设计等场景。随着AI智能体开发的兴起,提示词工程进一步演化为定义智能体身份认知和行为规范的系统接口设计,成为构建自主AI系统的关键技术基础。掌握从基础提示词到智能体开发的完整技能栈,能够帮助开发者在AI技术浪潮中保持核心竞争力。

weixin_33139275的博客 333

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2225

mysql innodb 的插入性能问题

<br />第一篇博客<br /> <br />今天在学习Mysql的时候遇到了一个问题,在此将它记下了。<br /><br />create table t_myisam(<br />a int not null primary key,<br />b char(8) not null<br />) engine=MYISAM ;<br /> <br />create table t_innodb(<br />a int not null primary key,<br />b char(8) not n

linjiang275773682的专栏 472

中科蓝讯蓝牙耳机SDK实战:从目录解析到消息处理框架

本文深入解析中科蓝讯蓝牙耳机SDK的目录结构与消息处理框架,提供从硬件驱动到蓝牙功能定制的实战指南。重点剖析SDK核心模块如消息队列机制、按键事件处理及电量报告优化,并分享二次开发中的调试技巧与避坑经验,助力开发者高效完成TWS耳机功能定制。

weixin_30335575的博客 388

mysql innodb 并发 插入 慢_MySQL/InnoDB的并发插入Concurrent Insert

MySQL/InnoDB的并发插入Concurrent Insert表people建表语句:ENGINE=InnoDBCREATETABLEpeople(person_idBIGINTNOTNULLAUTO_INCREMENT,first_nameVARCHAR(20),last_nameVARCHAR(20),PRIMARYKEY(person_id));两个会话:会话一...

weixin_39881859的博客 356

ROS中tf2_ros::Buffer.lookupTransform的正确使用姿势:从踩坑到填坑

本文深入解析了ROS中tf2_ros::Buffer.lookupTransform接口的正确使用方法,重点剖析了因tf2_ros::TransformListener生命周期管理不当导致的经典问题。文章提供了从理解Buffer与Listener共生关系、类成员设计黄金法则到参数详解与异常处理的完整避坑指南,并给出了构建健壮坐标变换工具类的实战方案,帮助开发者稳定实现机器人坐标系变换。

weixin_29253711的博客 136

错误代码105(ERR_NAME_NOT_RESOLVED)详解与解决方案

错误代码105表示"",当您的浏览器无法将网站域名转换为IP地址时就会出现此错误。这是最常见的网络连接问题之一,通常与DNS(域名系统)有关。

欢乐打代码! 1万+

MySQL Innodb性能优化的建议

1)一次只修改一个参数,这是判断是否可以从你的修改获益的唯一途径 2)大多数的参数是可以通过 SET GLOBAL进行在线修改的,它可以让你很快恢复任何有问题的修改,最后,你必须在配置文件中进行永久的修改 3)确保你的修改在[mysqld]中进行配置,否则重启之后该配置无法显现 4)当你修改配置文件机器无法重启,请仔细检查你的修改,尤其要注意修改参数的常量单位 5)在配置文件中不要进行重复配置(采用注释手段),如果你想记录历史变更,那么请使用版本控制工具Git,Svn

A story of Mars.He 560

Windows安装 OpenClaw详细教程(使用wsl2+ubuntu)

OpenClaw 是一款于 2026年1月 正式对外开源的个人AI助手平台(AI Agent),由 PSPDFKit 创始人彼得·斯坦伯格(Peter Steinberger) 开发。它不仅仅是一个聊天机器人,更是一个能够主动执行任务的“数字管家”。OpenClaw的核心特点是本地化部署、隐私可控以及强大的自动化执行能力。OpenClaw 项目在开发过程中经历过两次更名,最终定为现名:初名:Clawdbot(因与 Claude 名称过于相似引发侵权争议而改名)。

猿小白的博客 1008

MYSQL-innodb性能优化几个点

MYSQL-innodb性能优化几个点数据库常用参数MYSQL数据库的参数配置一般在my.ini配置(部分参数也可以用set global参数名=值 做临时调整,重启后失效),配置完后需要重启数据库才生效。参数1:slow_query_log= 0|1说明:开关慢查询日志。slow_query_log_file=为存放路径;long_query_time =记录超过的...

weixin_34066347的博客 234

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Mysql innodb 存储引擎的性能优化

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33840661的博客 118

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Mysql innodb存储引擎的性能优化一

http://zauc.wordpress.com/category/mysql/ Mysql innodb performance optimization Mysql innodb存储引擎的性能优化 本文翻译自http://www.mysqlperformanceblog.com/files/presentations/UC2007-Innodb-Performance-

Alps__的专栏 1157

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MySQL InnoDB表空间深度解析:从原理到性能优化

本文系统介绍了MySQL InnoDB表空间的原理与实践。主要内容包括:表空间基础概念与分类(系统表空间、独立表空间、通用表空间等);InnoDB内部存储结构(页、区、段)的组织方式;各版本特性对比,重点分析MySQL 8.0在Undo表空间独立化、碎片回收等方面的改进;表空间管理策略与性能优化方法,如双写缓冲、变更缓冲的应用;实战案例展示空间回收与I/O优化技巧。通过深入理解表空间机制,数据库管理员可以更有效地进行存储规划、性能调优和版本迁移。

持续输出Java相关知识 1185

mysql innodb 性能优化

默认情况下,innodb的参数设置的非常小,在生产环境中远远不够用 比如最重要的两个参数 innodb_buffer_pool_size 默认是8M innodb_flush_logs_at_trx_commit 默认设置的是1 也就是同步刷新log(可以这么理解) innodb_buffer_pool_size: 这是InnoDB最重要的设置,对InnoDB性能有决定性的影响。默认的设置只有8...

m0_37477061的博客 342

mysql innodb my.cnf_my.cnf参数配置实现InnoDB引擎性能优化

在网上看了无数的my.cnf的配置,大多数提到的配置无外乎这几个:1. innodb_buffer_pool_size2. innodb_log_file_size3. innodb_log_buffer_size4. innodb_flush_log_at_trx_commit然后自己写了两个例子,一个单线程的,一个多线程的来通过改变配置参数来测试是否提高了性能。结果是只有innodb_flus...

weixin_35364187的博客 202

mysql 引擎优化_关于mysql innodb引擎性能优化的一点心得

个人总结了一些mysql优化的一些手段。mysql的默认参数配置通常是考虑到通用性,小型网站的架构。可优化的空间是非常大的,主要介绍innodb引擎的。1. innodb_buffer_poor_size. 默认为好像是8M还是16M的样子。该参数相当于myisam引擎的key_buffer-size参数,8M大小对于一个相对成熟点的系统来说是远远不够的。 作用是缓冲数据和索引,对于mysql的性...

weixin_39732991的博客 242

Mysql innodb存储引擎的性能优化

ref:http://7567567.blog.51cto.com/706378/586925Mysql innodb存储引擎的性能优化这个说得挺全,挺不错![@more@]一切都从应用程序设计开始 1. 通用应用程序的设计是...

cl2689163935的博客 193

mysql innodb 性能_Mysql Innodb 性能优化

innodb_buffer_pool_sizeinnodb_buffer_pool_size参数指的是内存中缓存innodb表的索引、数据的插入时缓冲,这是innodb参数优化的首要参数innodb_buffer_pool_size默认值是8M,如果mysql所用的是专用的DB服务器,那么可以把这个数字设置为实际物理内存的70%到80%,这个参数不能动态改变,所以配置时...

weixin_35704532的博客 314

mysql innodb 修改_MySQL 性能优化(INNODB下修改表结构)

最近碰到一个奇怪的问题:在MySQL中修改一个大表的结构(增加一列),发现修改缓慢无比,表是用的INNODB引擎,大小大概6G的样子!按道理修改表结构应该会很快(因为CPU耗费不是很大,无非就是读就数据写入新的文件),由于执行时间超出了预期,所以该想办法解决了(要感谢我一位无所不能的伟大的同事 )分析问题:MYSQL修改表结构时,会从旧表中读取数据,然后写入临时表(和旧表在同一目录下,命名方式为#...

weixin_28909303的博客 352
上一篇: 常用linux命令
下一篇: Mysql的GROUP_CONCAT()函数使用方法
phptripper
博客等级 码龄18年 10粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值