MyISAM存储引擎并发读写

线上系统需要在白天向数据库中load数据,由于使用的是MyISAM存储引擎,该存储引擎的锁为表级锁,所以在写入的过程中会锁表,但是无法保证在写入过程中没有查询,所以需要支持并发读写,MySQL官方文档说支持这种操作,但是还是得实际测试

首先在不做任何修改的情况下,load数据的时候做查询,不出意外出现了表锁,导致查询结果不出来,如下:


通过上图可见,查询一直在等待写的表级锁

查询MySQL官网文档,说需要设置concurrent_insert =ALWAYS,支持并发写

修改配置项,重启,再次测试,发现读还是在等待表的锁.......

继续查询MySQL文档,后面发现,后面发现Load的的格式如下

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'

    [REPLACE | IGNORE]

    INTO TABLE tbl_name

    [FIELDS

        [TERMINATED BY '\t']

        [[OPTIONALLY] ENCLOSED BY '']

        [ESCAPED BY '\\' ]

    ]

    [LINES 

        [STARTING BY '']    

        [TERMINATED BY '\n']

    ]

    [IGNORE number LINES]

    [(col_name,...)]

即load的时候,可以选择并发或者读优先,在加上CONCURRENT后,可以并发读写

总结,在向MyISAM load数据时,如果要实现读不锁,1、配置concurrent_insert =ALWAYS,2、load加上CONCURRENT选项


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值