一种向数据库插入数据的方法及装置制造方法及图纸

技术编号:15405767 阅读:122 留言:0更新日期:2017-05-24 22:19
一种向数据库插入数据的方法及装置,所述方法包括:获取需要向数据库的第一数据表插入的行数据,该行数据中的每个数据项与第一数据表中的每个字段一一对应,所述第一数据表与第一计数器、第一缓冲区和第一读写锁相互对应;按照下述方式完成向数据库插入数据的操作:使第一计数器累加一个计数,并将行数据放入第一缓冲区中;判断第一计数器中的计数值是否达到设定阈值;如果是,则使第一计数器中的计数值置为零,将第一缓冲区中缓冲的所有行数据放入第一数据表中,清除第一缓冲区中缓冲的所有行数据,继续执行获取行数据的步骤;如果否,则继续执行获取行数据的步骤;其中,在至少一次的第一读写锁的访问控制期间完成上述操作中的读写操作。

Method and device for inserting data into database

A device and method to insert data into the database, the method comprises: acquiring data lines to be inserted to the first data database table, the data in each data item and each field of the first data table corresponding to the first data table corresponds with the first counter, the first buffer and first read and write locks; according to the following way to insert data into the database operation: make a first counter cumulative count, and the data in the first buffer; determine the count value of the first counter is set to reach the threshold; if yes, the value of the first counter count to zero, for all the first data buffer in the buffer into the first data table, all the data in the buffer buffer to remove the first, continue to implement the data acquisition step; if not, The step of obtaining the row data is continued, wherein read and write operations in the above operation are completed during access control of at least once the first read write lock.

【技术实现步骤摘要】
一种向数据库插入数据的方法及装置
本专利技术涉及数据库
,尤其涉及一种向数据库插入数据的方法及装置。
技术介绍
关系数据库是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据,譬如,MySQL就是一个关系型数据库管理系统。MySQL数据库既支持单行的插入操作,也支持多行批量插入操作。例如:单行插入操作的形式为:insertintotable_avalues(a1,b1,c1),表示将数组(a1,b1,c1)插入到表table_a中;多行插入操作的形式为:insertintotable_avalues(a1,b1,c1),(a2,b2,c2),表示将数组(a1,b1,c1)和(a2,b2,c2)插入到表table_a中。一般而言,若需要插入相同数目的行,一次多行插入操作的效率要比多次单行插入的效率要高,举个例子,当往同一个表中插入10行数据时,一次批量插入操作比10次单行插入效率要高很多。现有方案中,在多线程环境下,每个线程有自己单独的缓冲区,即缓冲区不会横跨线程。当需要向数据库的表table_a中插入多行数据时,若每行数据中的数据顺序均相同、且每行数据都没有缺失的情况下,则将所述多行数据放入对应线程的缓冲区中,待所述缓冲区中的数据行数达到设定阈值时,便将所述多行数据批量插入到数据库中的表table_a中;若因某行数据中存在缺省项导致需要插入的行数据顺序与数据库中的行数据顺序不对应,则对该行数据进行处理并采用单行插入的方式将该行数据插入到数据库中。但是,由于每个线程单独拥有缓冲区,每个缓冲区只有达到阈值要求时才能进行批量插入,基于数据较大地分散在各个线程的缓冲区中,若缓冲区中的行数据数量长时间不能满足阈值要求,将导致缓冲区的行数据长时间处于等待的状态,从而降低了数据插入的效率,若采用单行插入的方式将导致数据插入效率较低。
技术实现思路
有鉴于此,本专利技术实施例的主要目的在于提供一种向数据库插入数据的方法及装置,以实现提高数据插入效率的目的。为实现上述目的,本专利技术提供了一种向数据库插入数据的方法,所述数据库中的每个数据表与一个计数器、一个缓冲区和一个读写锁相互对应,所述方法包括:获取需要向所述数据库的第一数据表插入的行数据,所述行数据中的每个数据项与所述第一数据表中的每个字段一一对应,所述第一数据表与第一计数器、第一缓冲区和第一读写锁相互对应;按照下述方式完成向数据库插入数据的操作:使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则使所述第一计数器中的计数值置为零,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中,清除所述第一缓冲区中缓冲的所有行数据,继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;其中,在至少一次的所述第一读写锁的访问控制期间完成上述操作中的读写操作,所述第一读写锁的访问控制期间是从开启所述第一读写锁后到关闭所述第一读写锁前的期间。优选地,具体按照下述方式完成向数据库插入数据的操作:在第一次开启所述第一读写锁的写模式后、且在第一次关闭所述第一读写锁的写模式前,使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则在第二次开启所述第一读写锁的写模式后、且在第二次关闭所述第一读写锁的写模式前,使所述第一计数器中的计数值置为零;在开启所述第一读写锁的读模式后、且在关闭所述第一读写锁的读模式前,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中;在第三次开启所述第一读写锁的写模式后、且在第三次关闭所述第一读写锁的写模式前,清除所述第一缓冲区中缓冲的所有行数据;继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤。优选地,所述第一数据表与第一预处理表相互对应,所述第一预处理表中按预设顺序存储了所述第一数据表中的每个字段,所述第一预处理表中每个字段对应的初始数据为空值;所述获取需要向所述数据库的第一数据表插入的行数据,具体包括:将所述行数据中的每个数据项与所述第一预处理表中的字段进行对应,并利用所述每个数据项替换所述第一预处理表中对应字段所对应的空值;按所述预设顺序获取与所述预处理表中每个字段对应的每个数据项。优选地,所述第一预处理表为第一哈希表。优选地,所述第一计数器的计数值和所述第一数据表的表名存储于第二哈希表中,所述第一缓冲区中缓冲的行数据和所述第一数据表的表名存储于第三哈希表中,所述第一读写锁的数据结构和所述第一数据表的表名存储于第四哈希表中;所述方法还包括:根据哈希算法获取与所述第一数据表的表名对应的第一计数器、第一缓冲区和第一读写锁。本专利技术实施例还提供了一种向数据库插入数据的装置,所述数据库中的每个数据表与一个计数器、一个缓冲区和一个读写锁相互对应,所述装置包括:行数据获取模块,用于获取需要向所述数据库的第一数据表插入的行数据,所述行数据中的每个数据项与所述第一数据表中的每个字段一一对应,所述第一数据表与第一计数器、第一缓冲区和第一读写锁相互对应;数据处理模块,用于按照下述方式完成向数据库插入数据的操作:使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则使所述第一计数器中的计数值置为零,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中,清除所述第一缓冲区中缓冲的所有行数据,继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;其中,在至少一次的所述第一读写锁的访问控制期间完成上述操作中的读写操作,所述第一读写锁的访问控制期间是从开启所述第一读写锁后到关闭所述第一读写锁前的期间。优选地,所述数据处理模块,具体包括:第一处理子模块,用于在第一次开启所述第一读写锁的写模式后、且在第一次关闭所述第一读写锁的写模式前,使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;阈值判断子模块,用于判断所述第一计数器中的计数值是否达到设定阈值;第二处理子模块,用于在所述阈值判断子模块判断得到的所述第一计数器中的计数值达到设定阈值时,在第二次开启所述第一读写锁的写模式后、且在第二次关闭所述第一读写锁的写模式前,使所述第一计数器中的计数值置为零;在开启所述第一读写锁的读模式后、且在关闭所述第一读写锁的读模式前,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中;在第三次开启所述第一读写锁的写模式后、且在第三次关闭所述第一读写锁的写模式前,清除所述第一缓冲区中缓冲的所有行数据;继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;第三处理子模块,用于在所述阈值判断子模块判断得到的所述第一计数器中的计数值未达到设定阈值时,继续利用所述行数据获取模块执行所述获取需要向所述数据库的第一数据表插入的行数据的功能。优选地,所述第一数据表与第一预处理表相互对应,所述第一预处理表中本文档来自技高网
...
一种向数据库插入数据的方法及装置

【技术保护点】
一种向数据库插入数据的方法,其特征在于,所述数据库中的每个数据表与一个计数器、一个缓冲区和一个读写锁相互对应,所述方法包括:获取需要向所述数据库的第一数据表插入的行数据,所述行数据中的每个数据项与所述第一数据表中的每个字段一一对应,所述第一数据表与第一计数器、第一缓冲区和第一读写锁相互对应;按照下述方式完成向数据库插入数据的操作:使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则使所述第一计数器中的计数值置为零,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中,清除所述第一缓冲区中缓冲的所有行数据,继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;其中,所述第一缓冲区中的数据是来自相同或不同线程的行数据;其中,在至少一次的所述第一读写锁的访问控制期间完成上述操作中的读写操作,所述第一读写锁的访问控制期间是从开启所述第一读写锁后到关闭所述第一读写锁前的期间。

【技术特征摘要】
1.一种向数据库插入数据的方法,其特征在于,所述数据库中的每个数据表与一个计数器、一个缓冲区和一个读写锁相互对应,所述方法包括:获取需要向所述数据库的第一数据表插入的行数据,所述行数据中的每个数据项与所述第一数据表中的每个字段一一对应,所述第一数据表与第一计数器、第一缓冲区和第一读写锁相互对应;按照下述方式完成向数据库插入数据的操作:使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则使所述第一计数器中的计数值置为零,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中,清除所述第一缓冲区中缓冲的所有行数据,继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;其中,所述第一缓冲区中的数据是来自相同或不同线程的行数据;其中,在至少一次的所述第一读写锁的访问控制期间完成上述操作中的读写操作,所述第一读写锁的访问控制期间是从开启所述第一读写锁后到关闭所述第一读写锁前的期间。2.根据权利要求1所述的方法,其特征在于,具体按照下述方式完成向数据库插入数据的操作:在第一次开启所述第一读写锁的写模式后、且在第一次关闭所述第一读写锁的写模式前,使所述第一计数器累加一个计数,并将所述行数据放入所述第一缓冲区中;判断所述第一计数器中的计数值是否达到设定阈值;如果是,则在第二次开启所述第一读写锁的写模式后、且在第二次关闭所述第一读写锁的写模式前,使所述第一计数器中的计数值置为零;在开启所述第一读写锁的读模式后、且在关闭所述第一读写锁的读模式前,将所述第一缓冲区中缓冲的所有行数据放入所述第一数据表中;在第三次开启所述第一读写锁的写模式后、且在第三次关闭所述第一读写锁的写模式前,清除所述第一缓冲区中缓冲的所有行数据;继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤;如果否,则继续执行所述获取需要向所述数据库的第一数据表插入的行数据的步骤。3.根据权利要求1或2所述的方法,其特征在于,所述第一数据表与第一预处理表相互对应,所述第一预处理表中按预设顺序存储了所述第一数据表中的每个字段,所述第一预处理表中每个字段对应的初始数据为空值;所述获取需要向所述数据库的第一数据表插入的行数据,具体包括:将所述行数据中的每个数据项与所述第一预处理表中的字段进行对应,并利用所述每个数据项替换所述第一预处理表中对应字段所对应的空值;按所述预设顺序获取与所述预处理表中每个字段对应的每个数据项。4.根据权利要求3所述的方法,其特征在于,所述第一预处理表为第一哈希表。5.根据权利要求1或2所述的方法,其特征在于,所述第一计数器的计数值和所述第一数据表的表名存储于第二哈希表中,所述第一缓冲区中缓冲的行数据和所述第一数据表的表名存储于第三哈希表中,所述第一读写锁的数据结构和所述第一数据表的表名存储于第四哈希表中;所述方法还包括:根据哈希算法获取与所述第一数据表的表名对应的第一计数器、第一缓冲区和第一读写锁。6.一种向数据库插入数据的装置,其特征在于,所述数据库中的每个数据表与一个计数器、一个缓冲区和一个读写锁相互对应,所述装置包括:行数据获取模...

【专利技术属性】
技术研发人员:周星
申请(专利权)人:北京搜狐新媒体信息技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1