1、采用mysql自增长主键策略
![](/images/smiles/icon_surprised.gif)
![](/images/smiles/icon_cry.gif)
2、使用时间戳+随机数
![](/images/smiles/icon_surprised.gif)
![](/images/smiles/icon_cry.gif)
3、每次取主键最大值+1做为新的主键
![](/images/smiles/icon_surprised.gif)
![](/images/smiles/icon_cry.gif)
4、单独建一个存放主键的表
![](/images/smiles/icon_surprised.gif)
![](/images/smiles/icon_cry.gif)
大概就是这几种比较容易想到,
即想做到移植性好,性能好,又不会出现并发问题,似乎是没有完美的方案了吗,不知道有木有童鞋有更好的推荐吗?
既然这样又经过思考后打算根据项目实际情况来定,主要分为以下几种情况
1、项目基础功能部分,例如菜单功能管理、用户管理、权限管理、机构组织管理、参数管理等采用【方案3】,这些功能一般数据量不大,基本没有大的性能问题和并发问题,如果移植的话改动也比较小
2、对于某些流水、日志类的表可采用【方案2】时间戳+随机数,时间戳做主键此时会更有意义
3、对于系统中大部分实际的业务功能采用【方案1】mysql的自增长策略,这样可减少开发工作量,并且性能和并发都有保障,如果项目就算移植的话,业务功能这部分肯定会有些变动,做二次开发,所以就暂不考虑移植性了。
PS:希望童鞋们推荐一些更好的解决方法。