由于没有办法增加读取服务器在短期内,我们已经采取了一些配置MySQL在数据real-time.hehe费用交换所有服务器的生命安全,具体相关的调整和思路如下:

MyISAM是高效的阅读作业时占主导地位。一旦大量并发读和写的出现,与InnoDB,MyISAM线效率会降低,而MyISAM和InnoDB数据存储方法明显不同:通常,在MyISAM,新的数据将被追加到文件末尾的数据,如果经常做一些更新,删除操作后,数据文件就不再是连续的,像点是许多孔产生的数据文件,然后再插入新的数据集,可以看看是否这些孔尺寸可容纳默认情况下新的数据,如果可以的话,直接向孔新的数据,另一方面,新的数据保存到数据文件的结束。这其中的原因是为了减少数据文件的大小,减少文件碎片的产生。但这是没有的情况下,InnoDB。在InnoDB,因为主键是集群,数据文件都是按主键排序。如果id用作主键,则新数据总是位于数据文件的结尾处。

知道的基本知识,让我们了解一些容易被忽略的MyISAM配置选项的谈话:

concurrent_insert:

一般来说,读写操作是串行的,在MyISAM,但当我们在同一个表的查询和插入操作,以减少锁竞争的频率,根据concurrent_insert设定,MyISAM可以并行处理查询和插入。

并发插入时不允许concurrent_insert = 0。

当concurrent_insert = 1,并发插入,允许一台无孔,和新的数据位于数据文件结束(默认)。

当concurrent_insert = 2,表是否有洞或不是,它是可以被插入在数据文件结束。

在这种方式中,它是集concurrent_insert 2很划算。至于所得到的文件片段,可以使用优化表语法来定期优化。

max_write_lock_count:

默认情况下,写操作的优先级高于读操作的优先级。即使读请求首先发送,发送的请求将被首先处理,然后读取请求将被处理一次。这就产生了一个问题:当我发出请求,我会阻止所有的阅读需求,直到我完成处理所有的请求。在这一点上,你可以考虑使用max_write_lock_count:

max_write_lock_count = 1

有了这个设置,当系统处理写操作时,就暂停了写操作,并给出了执行读操作的机会。

低优先级更新:

我们也可以更清晰,直接降低写操作的优先级,并给予读操作更高的优先级。

低优先级更新= 1

一般来说,concurrent_insert = 2是绝对推荐。作为max_write_lock_count = 1和低优先级更新= 1,这要视情况而定。如果你能降低写操作的优先级,使用低优先级更新= 1,否则使用max_write_lock_count = 1。