如果一个表,update、select都比较频繁,有什么办法来减少表锁?使用主从同步/读写分离可以达到效果吗?分离后,“写入服务器”上读减少了,但“读取服务器”上的写似乎不会减少吧?“写入服务器”上的binlog在“读取服务器”上应用时不会存在表锁吗?使用分区表可以达到效果吗?没找到相关资料说,什么样的情形下,所只加在特定分区上,而不是整个表上面,所以也不确定这个方法是否有效。

解决方案 »

  1.   

    如果一个表,update、select都比较频繁,有什么办法来减少表锁?
    ==>> 
    要减少锁表 那就用行级锁..
    并发性比较高。InnoDB引擎支持行级锁~
      

  2.   

    使用InnoDB的情况下,还有其他手段可用吗?读写分离能减少锁表?我的疑问是,假设未采用读写分离方案的情况下数据库锁表严重,那么会因为使用了读写分离,就能极大减轻锁表状况?读写分离方案中,
    假设采用master/salve同步,insert/update/delete在master上执行,select在salve上执行。我的意思是,master上的binlog在salve上进行同步应用时,不会和salve上的select操作竞争产生锁表吗?另外想问下各位,分区技术对减轻锁表有没有作用?
      

  3.   

    那么 读写分离能减少锁表?我的疑问是,假设未采用读写分离方案的情况下数据库锁表严重,那么会因为使用了读写分离,就能极大减轻锁表状况?读写分离方案中,
    假设采用master/salve同步,insert/update/delete在master上执行,select在salve上执行。我的意思是,master上的binlog在salve上进行同步应用时,不会和salve上的select操作竞争产生锁表吗?
      

  4.   

    master上的binlog在salve上进行同步应用时,会和salve上的select操作产生锁竞争!
      

  5.   

    那么,结论就是,读写分离本质上并不会减少锁表?
    按照这样的理解,读写分离后,对master(“写”服务器)而言,完全没了读的负担,但是对salve(“读”服务器)而言,读没有减少,写也没有减少,那么读写分离对性能的提升体现在哪?我只理解到它的安全性(备份)功能!
      

  6.   


    high performance mysql上说5.1版本分区还没有这个功能,但听他的语气后续版本会增加这样的功能!
      

  7.   


    master只写,多台slave分担了select查询,平摊在单台上的select变少了,也就会减少与binlog同步过去的写操作竞争了! 仅此而已!
      

  8.   


    同步如果是statement-based模式,肯定会产生锁表的,因为它的机理就是将master上写操作的语句传给slave上执行!
    至于row-based模式,我不清楚,请高手进一步解答!