Chinaunix首页 | 论坛 | 博客
  • 博客访问: 811374
  • 博文数量: 50
  • 博客积分: 757
  • 博客等级: 上士
  • 技术积分: 1913
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-29 14:29
个人简介

DBA

文章分类

全部博文(50)

文章存档

2015年(3)

2014年(2)

2013年(14)

2012年(19)

2011年(12)

分类: Mysql/postgreSQL

2012-04-09 17:42:23

        最近遇到项目需要使用自增id分发数据,分库分表。一个字典表里保存着表名和当前的id,每次插入都要更新这个表,由于并发导致锁严重,不到30行的表,查询竟然平均1.5s。
       总结两种常用的方法:
       1、使用字典表,每次更新的时候步长加大,不是1,而是5,或者10,20等,根据并发决定,然后缓存到内存中,从内存中取。上面遇到问题的项目就是使用这种方法,但是步长太小了,设置的5,导致锁严重,后来改成了20,缓解了不少。
       2、使用数据库的自增字段。数据库的自增也存在锁,但是比我们实现的都好的多。创建一个表,只有一个自增字段,每次像其中插入一个null值,自增,然后查出最后一个。这种方式没有没有锁,比上面的块一些。
       不知道大家有没有更好的方法,求指教。
阅读(2152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~