mysql
mysql存储引擎、索引、优化
fandy.lin
生命不息,追寻不止..
展开
-
为什么用与业务无关的自增id作为mysql主键
业务无关的自增id作为数据库主键:1、可以反过来思考,若使用业务相关的唯一标识做主键,小概率可能会因为业务场景的变更,此时的被认定为业务唯一标识的字段不唯一。虽然有点牵强,但是很多都基于这种考虑。2、对于InnoDB来说,主键是聚簇索引,主键索引位置同时存储索引值和该行记录。在B+树的数据结构中叶子节点存储数据,如果没定义主键,则会使用非空且唯一的字段,默认为作为主键,如果前面两者都不存在则...原创 2020-02-18 22:40:00 · 3727 阅读 · 2 评论 -
数据库并发情况下重复写入
有一个信息并发调用java接口的场景,那么java多线程同时校验信息不存在于数据库,不加以控制便会造成两条信息重复写入,解决办法:1、在数据库为字段建立唯一索引,那么在写入过程中,可以看到的是,同时写入,会把先写入的回滚:id为自增主键,那么id值为20开始保存下一条设备信息,两条deviceId相同设备信息同时写入,那么id值变为了22。(简单高效)2、使用分布式锁,基于redis的实现方...原创 2020-02-18 22:53:34 · 1377 阅读 · 1 评论