`
zzhonghe
  • 浏览: 248161 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

决定MyISAM的Select&Insert&Update并发性能的参数

    博客分类:
  • DB
 
阅读更多
concurrent_insert  通过查看 show variables like '%concurrent%'

0: 表示不能并发,Select, insert之间只能串行执行


1:表中有空洞(删除记录留下的)情况下,阻塞insert; 表中无空洞的情况下,Insert并发插入表尾


2:无论是否有空洞都并发插入表尾


默认情况下, 这个值是1, 所以在既有Select又有insert的情况下,很容易就出现了近似串行的执行场景。


例如: 

session 1正在执行一条select语句,需要3秒

session 2未等1执行完,就执行了一条insert, 那么这个insert会等到session 1执行完才能执行(有空洞),同时这个session 2锁住表

session 3也是一条select语句,发现表被session2锁住了,只能等待

session 4也是select语句,同样等待

session 5是insert语句,继续等待

直到session1完成后, session2也完成后, 3,4才能执行,假设3,4也要3秒,那么session 5继续等待,其他session又开始等待。



结论就是, 如果那条语句执行的时间稍微长点, 同时又有insert的话,MyISAM表会非常容易变成串行执行。



解决方法:

1.  concurrent_insert=2  坏处就是delete的空洞永远都不去补回来了,浪费空间,浪费了cpu扫描


2.  --low-priority-updates启用mysqld,让select有更高优先级


3.  在语句中加上HIGH_PRIORITY, LOW_PRIORITY以定义优先级,让select赶在insert锁定之前执行

分享到:
评论

相关推荐

    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比

    1、MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是IndexedSequentialAccessMethod(有索引的顺序访问...MyISAM:myisam只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,

    MyISAM InnoDB 区别

     6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表...

    Innodb与Myisam引擎的区别与应用场景

    - **InnoDB**:对于复杂的INSERT和UPDATE操作表现更佳,尤其是在需要事务支持的场景下。尽管在某些读取密集型的应用场景下,其性能可能不如MyISAM,但其在写入密集型场景中的优势明显。 4. **COUNT(*)查询的处理**...

    MyISAM,InnoDB存储引擎1

    InnoDB引入了行级锁,这极大地提高了并发处理能力,尤其是在进行大量INSERT或UPDATE操作时。然而,InnoDB在执行COUNT(*)时需要遍历整个表,效率较低。此外,InnoDB支持外键,有助于维护数据的参照完整性。 总的来说...

    高性能mysql摘要

    在MVCC中,SELECT操作只查看事务开始之前的数据,INSERT、DELETE和UPDATE则记录数据版本,使得在高并发环境下,读写操作可以并行执行,减少了锁定需求。 MySQL支持多种存储引擎,其中MyISAM和InnoDB是最常见的。...

    高性能mysql PDF 中英文合集

    - SQL语言:书中详细讲解了SQL查询语句,包括SELECT、INSERT、UPDATE和DELETE等,以及复杂的JOIN操作。 2. **高性能存储引擎**: - InnoDB与MyISAM:对比InnoDB(支持事务和行级锁定)和MyISAM(快速但不支持事务...

    SQL性能分析(英文原版)

    理解SQL的基本语法和操作,如SELECT、INSERT、UPDATE、DELETE等,是进行性能分析的前提。 2. **索引原理**:索引是数据库快速查找数据的关键,通过建立在列上的索引,可以显著提高查询速度。理解B树、哈希索引以及...

    掌握MyISAM的精髓:深入解析其存储引擎特性

    这虽然降低了并发性能,但在读密集型应用中通常不是问题。 2. **全文索引支持**:MyISAM 是 MySQL 中最早支持全文索引的存储引擎之一,非常适合需要全文搜索功能的应用场景。 3. **数据存储和索引分离**:MyISAM...

    SQL语句长度限制MYSQL配置.pdf

    8. **concurrent_inserts**:允许在执行SELECT操作的同时进行INSERT操作,提高并发性能。默认情况下,MySQL允许这种并发操作。 9. **connect_timeout**:定义了MySQL服务器等待客户端连接请求的最大时间,超过这个...

    mysql事务与锁机制(存储引擎和锁、MyISAM锁机制、InnoDB锁机制、Next-Key锁、Dead-Lock).docx

    在实际应用中,应避免在高并发环境下使用MyISAM,特别是在频繁写入的场景下。因为其表级锁会导致大量阻塞,严重影响系统性能。通常推荐使用支持行级锁的InnoDB引擎。 #### 三、InnoDB锁机制 **1、事务基础概念** ...

    Mysql存储引擎InnoDB和Myisam的六大区别

    - 若执行大量INSERT或UPDATE操作,InnoDB更合适,因为InnoDB在处理并发写入时有更好的性能。 - DELETE FROM table操作,InnoDB会逐行删除,而MyISAM会重建整个表。 - LOAD TABLE FROM MASTER在InnoDB中无效,需要...

    浅析MYSQL中的并发操作与锁定

    MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁。因此,对MyISAM表进行操作,会有以下情况: * 对MyISAM表的读操作(加读...

    MySQL性能调优与架构设计高清全册pdf

    1. **SQL基础与优化**:书中首先会讲解SQL语言的基本概念,包括查询语句(SELECT)、插入数据(INSERT)、更新数据(UPDATE)和删除数据(DELETE)。然后,将深入讨论SQL优化技巧,如避免全表扫描、合理使用索引、...

    Mysql(MyISAM)的读写互斥锁问题的解决方法

    尤其是在主从复制环境中,主库快速完成写操作,而从库因为持续的SELECT查询而被UPDATE和INSERT操作堵塞,引发从库负载过高。 MyISAM的读写锁问题是由于其存储机制决定的。MyISAM表在数据文件中以非连续的方式存储...

    利用mysql事务特性实现并发安全的自增ID示例

    在性能和可扩展性之间找到平衡点,是决定采用哪一策略的关键。 总之,理解并有效利用MySQL的事务特性,如InnoDB的行级锁定和`LAST_INSERT_ID()`函数,可以在并发环境下保证自增ID的安全生成,避免冲突和重复。对于...

    mysql性能优化_数据库_onlyyjco的专栏-CSDN博客.7z

    - 减少锁定,使用`REPLACE INTO`或`ON DUPLICATE KEY UPDATE`代替`INSERT...SELECT`。 - 更新大表时,考虑分批处理,避免一次性更新大量数据。 - 避免在UPDATE或DELETE语句中使用JOIN。 3. **索引策略**: - 为...

    mysql面试题,涉及MySQL基础、MySQL索引、MySQL语句 MySQL进阶等方面,适用于初、中级开发人员

    * 性能:MyISAM 的读取速度比 InnoDB 快,但是在高并发环境下,InnoDB 的性能更好。 * 数据安全:InnoDB 支持崩溃恢复和数据恢复,而 MyISAM 不支持。 3. 联合索引和索引的最左匹配 在 MySQL 中,联合索引的建立...

    常见的面试点1

    - InnoDB适合大量INSERT、UPDATE操作,MyISAM在SELECT操作上有优势。 - DELETE FROM操作,InnoDB是逐行删除,MyISAM会重建表。 - AUTO_INCREMENT处理,InnoDB要求单独索引,MyISAM可以与其他字段联合索引。 了解...

Global site tag (gtag.js) - Google Analytics