广告
返回顶部
首页 > 资讯 > 数据库 >Mysql 中怎么优化insert性能
  • 519
分享到

Mysql 中怎么优化insert性能

2024-04-02 19:04:59 519人浏览 薄情痞子
摘要

本篇文章为大家展示了Mysql 中怎么优化insert性能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mysql优化之加速INSERT插入一条记录花费的时间由以下

本篇文章为大家展示了Mysql 中怎么优化insert性能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

mysql优化之加速INSERT插入一条记录花费的时间由以下几个因素决定,数字表示影响的比例:
 
连接:(3)
 
发送查询给服务器:(2)
 
解析查询:(2)
 
插入记录:(1*记录大小)
 
插入索引:(1*索引数量)
 
关闭:(1)
 
此处没有考虑初始化时打开数据表的开销,因为每次运行查询只会做这么一次。
 
如果是B-tree索引,随着索引数量的增加,插入记录的速度以logN的比例下降。
 
可以用以下几种方法来提高插入速度:
 
如果要在同一个客户端在同一时间内插入很多记录,可以使用INSERT语句附带有多个values值。这种做法比使用单一值的INSERT语句快多了(在一些情况下比较快)。如果是往一个非空数据表增加记录,可以调整变量bulk_insert_buffer_size的值使其更快。
 
如果要从不用的客户端插入大量记录,使用INSERT DELAYED语句也可以提高速度。
 
对应MyISAM,可以在SELECT语句正在运行时插入记录,只要这时候没有正在删除记录。
 
想要将一个文本文件加载到数据表中,可以使用LOAD DATA INFILE。这通常是使用大量INSERT语句的20倍。
 
通过一些额外工作,就可以让LOAD DATA INFILE在数据表有大量索引的情况下运行更快。步骤如下:
 
用create table随表建一个表
 
执行FLUSH TABLES语句或admin flush-tables命令
 
执行myisamchk –keys-used=0 -rq /path/to/db/tbl_name命令,删除数据表所有索引。
 
执行LOAD DATA INFILE,数据插入到表中,由于无需更新表索引,因此这将非常快。
 
如果将来只是读取该表,运行myisampack让数据表更小。
 
运行myisamchk -r -q /path/to/db/tbl_name重建索引。创建的索引树在写入磁盘前先保存在内存中,这省去了磁盘磁盘搜索,因此速度快很多。重建后的索引树分布非常均衡。
 
执行FLUSH TABLES语句或mysqladmin flush-tables命令
 
注意,在Mysql 4.0起,可以运行ALTER TABLE tbl_name DISABLE KEYS来代替myisamchk –keys-used=0 -rq /path/to/db/tbl_name.运行ALTER TABLE tbl_name ENABLE KEYS代替myisamchk -r -q /path/to/db/tbl_name.这么做就可以省去FLUSH TABLES步骤。
 
 
 
可以在表后,一起执行几个语句来加速INSERT操作:
 
LOCK TABLES a WRITE;
 
INSERT INTO a VALUES(1,23),(2,23);
 
INSERT INTO a VALUES(8,7);
 
UNLOCK TABLES;
 
这对性能提高的好处在于:直到所有的INSERT语句都完成之后,索引缓存一次性刷新到磁盘中。通常情况下,有多少次INSERT语句就会有多少次索引缓存刷新到磁盘中的开销。如果能在一个语句中一次性插入多个值的话,显然锁表操作也没有必要了。对于事务表而言,用BEGIN/COMMIT代替LOCK TABLES来提高速度。锁表也会降低多次连接测试的总时间,尽管每个独立连接为了等待锁的最大等待时间也会增加。
 
Connection 1 does 1000 inserts
 
Connection 2,3 and 4 do 1 insert
 
Connection 5 does 1000 inserts
 
如果没有锁表,则连接2,3,4会在1,5之前完成。如果锁表了,则连接2,3,4可能在1,5之后才能完成,但总时间可能只需要40%。Mysql的INSERT、UPDATE、DELETE操作都非常快,不过在一个语句中如果超过5个插入或者更新时最好加锁以得到更好的性能。如果要一次性做很多次插入,最好在每个循环的前后加上LOCK TABLES和UNLOCK TABLES,从而让其他进程也能访问数据表;这么做性能依然不错。INSERT总比LOAD DATA INFILE插入数据慢,因为二者实现策略有分明的不同。
 
想要MyISAM表更快,在LOAD DATA INFILE和INSERT时都可以增加系统变量key_buffer_size的值。
 

上述内容就是Mysql 中怎么优化insert性能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql 中怎么优化insert性能

本文链接: https://www.lsjlt.com/news/58243.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql 中怎么优化insert性能
    本篇文章为大家展示了Mysql 中怎么优化insert性能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql优化之加速INSERT插入一条记录花费的时间由以下...
    99+
    2022-10-18
  • 如何在MySQL数据库中优化insert的性能
    如何在MySQL数据库中优化insert的性能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MySQL的 insert 语句语法,关于mysq...
    99+
    2022-10-18
  • MySQL中怎么优化查询性能
    MySQL中怎么优化查询性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。WHERE条件字段使用函数假设我们有如下创建表的语句mysq...
    99+
    2022-10-18
  • 怎么进行MySQL性能优化中的索引优化
    本篇文章为大家展示了怎么进行MySQL性能优化中的索引优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引...
    99+
    2022-10-19
  • 怎么优化MySQL数据库性能
    这篇文章主要为大家展示了“怎么优化MySQL数据库性能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么优化MySQL数据库性能”这篇文章吧。  1、选取最适用...
    99+
    2022-10-19
  • MySQL-性能优化
    有志者,事竟成 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。 文章目录 前言一、优化简介二、优化...
    99+
    2023-08-17
    mysql 性能优化 数据库
  • MySQL中怎么优化批量SQL插入性能
    本篇文章为大家展示了MySQL中怎么优化批量SQL插入性能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、一条SQL语句插入多条数据常用的插入语句如:INSERT...
    99+
    2022-10-18
  • Vue.js中怎么优化性能
    这篇文章主要介绍“Vue.js中怎么优化性能”,在日常操作中,相信很多人在Vue.js中怎么优化性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue.js中怎么优化性能”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • mysql性能优化(二)
                          mysql性能优化(二)query cache的限制...
    99+
    2022-10-18
  • 怎么分析MySQL性能优化的参数
    怎么分析MySQL性能优化的参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL的优化我分为两个部分,一是服务器物理硬...
    99+
    2022-10-19
  • MySQL 性能优化小结
    基础概念简述 锁 数据库通过锁机制来解决并发场景 — 共享锁(读锁)和排他锁(写锁)。读锁是不阻塞的,多个客户端可以在同一时刻读取同一个资源;写锁是排他的,并且会阻塞其他的读锁和写锁。 简单提下乐观锁和悲观锁: 乐观锁:通常用于...
    99+
    2020-11-11
    MySQL 性能优化小结
  • 如何优化MYSQL性能
    本篇文章给大家分享的是有关如何优化MYSQL性能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1. MySQL性能优化简介  在Web应用...
    99+
    2022-10-18
  • mysql-查询性能优化
    不要取出全部列,取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还会为服务器带来额外的I/O、内存和CPU的消耗。应该严格禁止SELECT * 的写法。MySQL使用如下三种方式应用WHERE条件,从好到坏依次...
    99+
    2021-02-18
    mysql-查询性能优化
  • MySQL如何优化性能
    本文小编为大家详细介绍“MySQL如何优化性能”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL如何优化性能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。- MySQL服...
    99+
    2022-10-19
  • 如何解析MySQL性能优化中的SQL优化
    如何解析MySQL性能优化中的SQL优化,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。注:以 MySQL 为背景,很多内容同时适用于其他关系型...
    99+
    2022-10-19
  • redis性能怎么优化?
    redis性能怎么优化?相信很多新手小白对redis性能优化的了解处于懵懂状态,小编给你几点建议,通过几点建议,希望你能收获更多。如下资料是关于redis性能优化的内容。一、 Redis部署结构优化建议1....
    99+
    2022-10-18
  • 怎么优化jQuery性能
    这篇文章主要介绍“怎么优化jQuery性能”,在日常操作中,相信很多人在怎么优化jQuery性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么优化jQuery性能”的疑惑...
    99+
    2022-10-19
  • 怎么做性能优化
    本篇内容主要讲解“怎么做性能优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么做性能优化”吧!问题分析标题中问出了两个问题,一个是有没有做过性能优化的工作,...
    99+
    2022-10-19
  • Ubuntu16.04性能怎么优化
    这篇“Ubuntu16.04性能怎么优化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ubuntu16.04性能怎么优化”文...
    99+
    2023-06-27
  • 关于mysql 8.x 中insert ignore的性能问题
    目录mysql 8.x中insert ignore性能问题mysql insert ignore()函数INSERT IGNORE语句mysql 8.x中insert ignore性能问题 mysql中replace i...
    99+
    2022-08-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作