Method and device for electronic equipment, write a database; including the writing method of database: writes the new data write request package into transactions to the database into the transaction queue; according to the transaction in the transaction queue in order for each row of data generated from the increase in the transaction in the transaction identifier; submit in the queue transaction, each data transaction in line since the increase in the data row after filling to mark into the database. This application can guarantee a strict serial self increase, and can guarantee the performance of high concurrency.
【技术实现步骤摘要】
一种数据库的写入方法及装置、电子设备
本专利技术涉及数据库领域,尤其涉及一种数据库的写入方法及装置、电子设备。
技术介绍
目前,数据库中一般可以实现自增列,自增列是指表中每一行的该列中的数据是自动递增的,比如第一行中自增列的值为1,第二行中自增列的值为2。传统数据库MySQL中实现的自增列有两种锁:表级别自增值锁和轻量级自增值锁;使用表级别自增值锁,在操作前加锁,操作完成后放锁,可以保证串行递增,但严重影响并发性能,实际场景中很少使用。轻量级锁只在申请自增值时加锁,允许高并发,但不能保证先申请自增值的请求先写入,不满足串行自增的需求。已有的单机数据库中所提供的主键列自增功能(比如在新记录插入表中时生成一个唯一的数字,该数字是一个递增的自然数),可以满足主键唯一性的要求,但无法满足串行自增的要求;如果需要满足串行自增,则需要串行执行所有事务,这会降低数据库的并发能力,导致数据库在高并发场景基本不可用。但在某些高并发场景下,需要严格的串行自增,并且能保证高并发性能。例如一个通信业务场景,多个用户都在向用户A发送消息,即多线程并发插入数据到数据库的同一个分区下,同时后台在不断地将用户A的新到达消息增量读出来。在没有自增列功能的场景下,为了保证后台不会丢失消息,需要保证发送给该用户的每条消息是串行的,方案复杂且并发性能不好。如果采用目前数据库所提供的自增功能,无法同时满足串行自增和保证高并发性能这两个要求。
技术实现思路
本申请提供一种数据库的写入方法及装置、电子设备,能够保证严格的串行自增,并且可以保证高并发时的处理性能。本申请采用如下技术方案。一种数据库的写入方法 ...
【技术保护点】
一种数据库的写入方法,包括:将向数据库写入新数据的写请求封装成事务,放入事务队列;按照事务在所述事务队列中的顺序为事务中的各数据行生成自增标识id;依次提交所述事务队列中的事务,将事务中各数据行的自增标识填充到数据行中后写入数据库。
【技术特征摘要】
1.一种数据库的写入方法,包括:将向数据库写入新数据的写请求封装成事务,放入事务队列;按照事务在所述事务队列中的顺序为事务中的各数据行生成自增标识id;依次提交所述事务队列中的事务,将事务中各数据行的自增标识填充到数据行中后写入数据库。2.如权利要求1所述的写入方法,其特征在于:先放入事务队列的事务中各数据行的自增id小于后放入事务队列的事务中各数据行的自增id;一个事务中包含多个数据行时,该事务中排序在先的数据行的自增id小于排序在后的数据行的自增id。3.如权利要求1所述的写入方法,其特征在于,所述依次提交事务队列中的事务,将事务中各数据行的自增标识填充到数据行中后写入数据库包括:将事务队列中的事务对应的日志数据依次写入日志,所述日志数据中包括对应的事务中各数据行的自增id;对日志中的日志数据对应的事务依次进行提交,对所述数据库进行写入,写入时在事务中各数据行里分别填充该数据行的自增id。4.如权利要求1所述的写入方法,其特征在于,当数据库包括多个分区时,每个分区各自独立维护自增id;所述将向数据库写入新数据的写请求封装成事务,放入事务队列包括:将向数据库写入新数据的写请求封装成事务,将封装得到的事务放到该事务所属分区对应的事务队列中。5.如权利要求1所述的写入方法,其特征在于,所述按照事务在事务队列中的顺序为事务中的各数据行生成自增id包括:对于事务队列中的每个事务,依次根据系统时间以及该事务所包含的数据行数,为该事务中的各数据行生成一批自增id。6.如权利要求1所述的写入方法,其特征在于,所述按照事务在事务队列中的顺序为事务中的各数据行生成自增id包括:对于事务队列中的每个事务中的各数据行,所生成的自增id的范围为:从1到该事务所包含的数据行数,加上以下两个数值中的较大的一个值:上次生成的自增id的值、系统时间。7.一种数据库的写入装置,其特征在于,包括:封装模块,用于将向数据库写入新数据的写请求封装成事务,放入事务队列;生成模块,用于按照事务在事务队列中的顺序为事务中的各数据行生成自增标识id;提交模块,用于依次提交事务队列中的事务...
【专利技术属性】
技术研发人员:杨恋,敬少强,杨世泉,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。