CN108228893A - 一种关系数据库数据持久化优化和排队方法 - Google Patents
一种关系数据库数据持久化优化和排队方法 Download PDFInfo
- Publication number
- CN108228893A CN108228893A CN201810109706.XA CN201810109706A CN108228893A CN 108228893 A CN108228893 A CN 108228893A CN 201810109706 A CN201810109706 A CN 201810109706A CN 108228893 A CN108228893 A CN 108228893A
- Authority
- CN
- China
- Prior art keywords
- data
- interim
- tables
- relational database
- relationship library
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000002688 persistence Effects 0.000 title claims abstract description 19
- 238000005457 optimization Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 abstract description 8
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 abstract description 2
- 238000000034 method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及通信技术领域,特别是一种关系数据库数据持久化优化和排队方法,包括如下步骤:步骤1:将数据写入多个临时表并存储到服务器中;步骤2:将临时表中的数据写入到服务器的关系库中所对应的表格中;其中,临时表与服务器中的表格一一对应,在数据写入到关系库中的表格过程中,关系库中所对应的表格被锁定禁止其他用户访问或其他临时表的数据写入。本发明的目的在于提供一种降低或消除死锁、降低数据处理量、提高数据处理速度的关系数据库数据持久化优化和排队方法。
Description
技术领域
本发明涉及通信技术领域,特别是一种关系数据库数据持久化优化和排队方法。
背景技术
目前企业使用的数据库主流都为关系数据库,关系数据库功能强大,可以支持多用户操作,关系数据库最大特点就是允许表和表之间存在关系,企业使用通常会同时把数据持久化在多个有关系表中,如果某个表发生失败时,为了数据一致行,需要本次持久化操作全部取消。为了实现回滚功能,关系数据库引入了事务,事务会对持久化过程中操作过的表进行加锁(别人不可读写),在本次持久化操作完成确认没有错误后,才进行解锁,反之就对数据进行回滚后,再进行解锁。
MSSQL是关系数据库中一个非常常用的数据库,如图1,在关系库中为两个表,表1和表 2,每个表有三条,共六条数据,要把六条数据持久化在数据库,按传统方式需要对应六次数据指令操作,指令记录为,
Insert into表1(FileName1,FileName2,FileName3)Values('Table1Row1FN1','Table1Row1FN2','Table1Row1FN3')
Insert into表1(FileName1,FileName2,FileName3)Values('Table1Row2FN1','Table1Row2FN2','Table1Row2FN3')
Insert into表1(FileName1,FileName2,FileName3)Values('Table1Row3FN1','Table1Row3FN2','Table1Row3FN3')
Insert into表2(FileName1,FileName2,FileName3)Values('Table2Row1FN1','Table2Row1FN2','Table2Row1FN3')
Insert into表2(FileName1,FileName2,FileName3)Values('Table2Row2FN1','Table2Row2FN2','Table2Row2FN3')
Insert into表2(FileName1,FileName2,FileName3)Values('Table2Row3FN1','Table2Row3FN2','Table2Row3FN3')
有六条指令需要对数据库六次极为耗资源IO操作,所以会造成对表1和表2进行长时间的锁。再者,如果提交第一条指令后,网速变慢,下条指令提交受阻变慢,更增加了事务完成时间,极为影响其他用户对这两个表的操作。
在这种情况下,极有可能存在传统灾难模式,假如上述六条数据分别由甲和乙同时进行操作,他们分别对应的操作记录为,
甲:
Insert into表 1(FileName1,FileName2,FileName3)Values('Table1Row1FN1','Table1Row1FN2','Table1Ro w1FN3')
Insert into表 2(FileName1,FileName2,FileName3)Values('Table2Row1FN1','Table2Row1FN2','Table2Ro w1FN3')
Insert into表 1(FileName1,FileName2,FileName3)Values('Table1Row2FN1','Table1Row2FN2','Table1Ro w2FN3')
乙:
Insert into表 2(FileName1,FileName2,FileName3)Values('Table2Row2FN1','Table2Row2FN2','Table2Ro w2FN3')
Insert into表 1(FileName1,FileName2,FileName3)Values('Table1Row3FN1','Table1Row3FN2','Table1Ro w3FN3')
Insert into表 2(FileName1,FileName2,FileName3)Values('Table2Row3FN1','Table2Row3FN2','Table2Ro w3FN3')
按照甲乙操作顺序:第一步,甲先操作表1并对表1加锁,乙先操作表2并对表2加锁。第二步,甲需要操作表2,但被乙在第一步已对表2加锁,造成甲无法操作只能等待,乙需要操作表1,但被甲在第一步已对表1加锁,乙也无法操作,也只能等待,就这样甲乙相互锁死对方,造成死锁,最终只有一方超时失败解锁,另一方才能继续,或者双方都超时失败。
发明内容
本发明的目的在于提供一种降低或消除死锁、降低数据处理量、提高数据处理速度的关系数据库数据持久化优化和排队方法。
本发明的具体的技术方案为:一种关系数据库数据持久化优化和排队方法,包括如下步骤:
步骤1:将数据写入多个临时表并存储到服务器中;
步骤2:将临时表中的数据写入到服务器的关系库中所对应的表格中;其中,临时表与服务器中的表格一一对应,在数据写入到关系库中的表格过程中,关系库中所对应的表格被锁定禁止其他用户访问或其他临时表的数据写入。
在上述的关系数据库数据持久化优化和排队方法中,当多个用户同时要求对关系库中的表格进行数据写入时,多个用户同时进行步骤1,并且根据用户的请求顺序进行依次步骤2。
在上述的关系数据库数据持久化优化和排队方法中,所述的步骤1中临时表中包含了其对应的关系库中的表格的信息;
所述的多个用户的临时表中记载的对应的关系库中的表格的信息至少部分相同。
与现有技术相比,本发明的有益效果在于:
本发明的方案由于采用了临时表,可以统一由临时表写入到关系库中,降低了锁死的概率,提高数据处理速度。
附图说明
图1是实施例1的流程方框图。
具体实施方式
下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。
实施例1
一种关系数据库数据持久化优化和排队方法,包括如下步骤:
步骤1:将数据写入多个临时表并存储到服务器中;
步骤2:将临时表中的数据写入到服务器的关系库中所对应的表格中;其中,临时表与服务器中的表格一一对应,在数据写入到关系库中的表格过程中,关系库中所对应的表格被锁定禁止其他用户访问或其他临时表的数据写入。
通过上述方法,可以避免用户同时直接调用同一关系库中的表格造成的长时间锁死的情况,不影响用户的数据写入,用户不会直接感觉数据处理速度的明显降低。
优选地,当多个用户同时要求对关系库中的表格进行数据写入时,多个用户同时进行步骤1,并且根据用户的请求顺序进行依次步骤2,所述的步骤1中临时表中包含了其对应的关系库中的表格的信息;所述的多个用户的临时表中记载的对应的关系库中的表格的信息至少部分相同。
为了更为具体的解释本实施例的方案,本发明的具体应用举例如下:
用户首先在数据库建立两个独享的临时表##temp1和##temp2,先分别把表1和表2数据缓存在临时表:
Insert into ##temp1(FileName1,FileName2,FileName3)Values('Table1Row1FN1','Table1Row1FN2','Ta ble1Row1FN3')
Insert into ##temp1(FileName1,FileName2,FileName3)Values('Table1Row2FN1','Table1Row2FN2','Ta ble1Row2FN3')
Insert into ##temp1(FileName1,FileName2,FileName3)Values('Table1Row3FN1','Table1Row3FN2','Ta ble1Row3FN3')
Insert into ##temp2(FileName1,FileName2,FileName3)Values('Table2Row1FN1','Table2Row1FN2','Ta ble2Row1FN3')
Insert into ##temp2(FileName1,FileName2,FileName3)Values('Table2Row2FN1','Table2Row2FN2','Ta ble2Row2FN3')
Insert into ##temp2(FileName1,FileName2,FileName3)Values('Table2Row3FN1','Table2Row3FN2','Ta ble2Row3FN3')
由于##temp1和##temp2是用户自己建表,并没有对表1和表2加锁,不会影响到其他用户。再由临时表统一复制到表1和表2,而且##temp1和##temp2数据是在服务器上,不受网络快慢影响到复制的速度。
Insert into表1(FileName1,FileName2,FileName3)Select*from##temp1
Insert into表2(FileName1,FileName2,FileName3)Select*from##temp2
这样的操作只对数据库进行两次IO操作,极大缩短了对表1和表2锁表时间。对其他用户的影响降到很低。
当遇到传统的灾难模式时,其本实施例的优化处理如下:
首先对甲建立自己独享的临时表##temp1和##temp2,同时注释为需要锁表1和表2
Insert into ##temp1(FileName1,FileName2,FileName3)Values('Table1Row1FN1','Table1Row1FN2','Ta ble1Row1FN3')
Insert into ##temp2(FileName1,FileName2,FileName3)Values('Table2Row1FN1','Table2Row1FN2','Ta ble2Row1FN3')
Insert into ##temp1(FileName1,FileName2,FileName3)Values('Table1Row2FN1','Table1Row2FN2','Ta ble1Row2FN3')
首先对乙建立自己独享的临时表##temp3和##temp4,同时注释为需要锁表1和表2
Insert into ##temp3(FileName1,FileName2,FileName3)Values('Table2Row2FN1','Table2Row2FN2','Ta ble2Row2FN3')
Insert into ##temp4(FileName1,FileName2,FileName3)Values('Table1Row3FN1','Table1Row3FN2','Ta ble1Row3FN3')
Insert into ##temp3(FileName1,FileName2,FileName3)Values('Table2Row3FN1','Table2Row3FN2','Ta ble2Row3FN3')
接下来甲乙将把数据对正在表进行持久化,
甲的操作是
Insert into表1(FileName1,FileName2,FileName3)Select*from##temp1
Insert into表2(FileName1,FileName2,FileName3)Select*from##temp2
乙的操作是
Insert into表2(FileName1,FileName2,FileName3)Select*from##temp3
Insert into表3(FileName1,FileName2,FileName3)Select*from##temp4
步骤2会存在以下几种模式:
模式一
甲乙可以同时复制到表1和表2中,这里处理与传统一样可能会出现死锁,当由于之前的优化,六次IO操作变成四次IO操作,锁的时间变短了,而且临时表都存于服务器,在复制过程不受网络快慢影响,死锁可能性会降到非常低。
模式二
根据操作请求的先后进行排队,让先请求完成全部操作后,再进行操作另外个请求。等于始终是一个用户对数据库进行操作,所以不会出现死锁的情况。如果甲先请求,乙就需要等待甲操作完后,才能进行操作。
模式三
多个操作请求可以同时进行,当在开始前,对正在执行操作注释需要锁的表进行比对判断,如果在执行操作注释中需要锁的表与该操作注释中需要锁的表有重叠,这个操作请求将被等待到正在执行操作请求完成后,才会被执行。甲在执行中,按规则乙是需要等待加执行完后才被执行,因为甲乙都有注释需要锁的表:表1和表2,如果存在丙,并且丙注释需要锁的表没有表1和表2,这个时候丙是可以同时执行。
以上所述的仅为本发明的较佳实施例,凡在本发明的精神和原则范围内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种关系数据库数据持久化优化和排队方法,其特征在于,包括如下步骤:
步骤1:将数据写入多个临时表并存储到服务器中;
步骤2:将临时表中的数据写入到服务器的关系库中所对应的表格中;其中,临时表与服务器中的表格一一对应,在数据写入到关系库中的表格过程中,关系库中所对应的表格被锁定禁止其他用户访问或其他临时表的数据写入。
2.根据权利要求1所述的关系数据库数据持久化优化和排队方法,其特征在于,当多个用户同时要求对关系库中的表格进行数据写入时,多个用户同时进行步骤1,并且根据用户的请求顺序进行依次步骤2。
3.根据权利要求2所述的所述的关系数据库数据持久化优化和排队方法,其特征在于,所述的步骤1中临时表中包含了其对应的关系库中的表格的信息;
所述的多个用户的临时表中记载的对应的关系库中的表格的信息至少部分相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810109706.XA CN108228893A (zh) | 2018-02-05 | 2018-02-05 | 一种关系数据库数据持久化优化和排队方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810109706.XA CN108228893A (zh) | 2018-02-05 | 2018-02-05 | 一种关系数据库数据持久化优化和排队方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108228893A true CN108228893A (zh) | 2018-06-29 |
Family
ID=62669729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810109706.XA Pending CN108228893A (zh) | 2018-02-05 | 2018-02-05 | 一种关系数据库数据持久化优化和排队方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228893A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217899A (zh) * | 2021-12-15 | 2022-03-22 | 平安国际智慧城市科技股份有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1331817A (zh) * | 1998-11-25 | 2002-01-16 | 电脑联合想象公司 | 用于并发数据库管理系统表操作的方法和设备 |
US6714935B1 (en) * | 1998-09-21 | 2004-03-30 | Microsoft Corporation | Management of non-persistent data in a persistent database |
CN101187934A (zh) * | 2006-11-21 | 2008-05-28 | 国际商业机器公司 | 用于提供对关系数据库表的高性能数据修改的方法和系统 |
CN101211362A (zh) * | 2006-12-26 | 2008-07-02 | 国际商业机器公司 | 用于数据库更新管理的系统和方法 |
CN101526957A (zh) * | 2009-04-09 | 2009-09-09 | 北京四方继保自动化股份有限公司 | 应用于电力自动化系统中的图形、模型一体化的版本管理方法 |
US20140222872A1 (en) * | 2013-02-04 | 2014-08-07 | Bank Of America Corporation | Multi-row database updating for enterprise workflow application |
-
2018
- 2018-02-05 CN CN201810109706.XA patent/CN108228893A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714935B1 (en) * | 1998-09-21 | 2004-03-30 | Microsoft Corporation | Management of non-persistent data in a persistent database |
CN1331817A (zh) * | 1998-11-25 | 2002-01-16 | 电脑联合想象公司 | 用于并发数据库管理系统表操作的方法和设备 |
CN101187934A (zh) * | 2006-11-21 | 2008-05-28 | 国际商业机器公司 | 用于提供对关系数据库表的高性能数据修改的方法和系统 |
CN101211362A (zh) * | 2006-12-26 | 2008-07-02 | 国际商业机器公司 | 用于数据库更新管理的系统和方法 |
CN101526957A (zh) * | 2009-04-09 | 2009-09-09 | 北京四方继保自动化股份有限公司 | 应用于电力自动化系统中的图形、模型一体化的版本管理方法 |
US20140222872A1 (en) * | 2013-02-04 | 2014-08-07 | Bank Of America Corporation | Multi-row database updating for enterprise workflow application |
Non-Patent Citations (1)
Title |
---|
董迎红: "信息管理系统中多用户并发控制理论及应用", 《现代情报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217899A (zh) * | 2021-12-15 | 2022-03-22 | 平安国际智慧城市科技股份有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
CN114217899B (zh) * | 2021-12-15 | 2023-10-17 | 深圳平安智慧医健科技有限公司 | 数据持久化方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6826604B2 (en) | Input/output device information management system for multi-computer system | |
US6067587A (en) | Method for serializing and synchronizing data packets by utilizing a physical lock system and a control data structure for mutual exclusion lock | |
US6851022B2 (en) | Raid controller and control method thereof | |
US7418563B2 (en) | Method for controlling storage device controller, storage device controller, and program | |
CN101046821A (zh) | 通用数据库操纵器 | |
CN110471688A (zh) | 业务系统处理方法、装置、设备及存储介质 | |
JPH04229355A (ja) | データアクセス方法及びデータ処理システム | |
US20060085487A1 (en) | Computer for storage device and method of control for storage device | |
JP2012033095A (ja) | 電子カルテの文書作成装置 | |
CN108228893A (zh) | 一种关系数据库数据持久化优化和排队方法 | |
CN106897345A (zh) | 一种数据存储的方法及装置 | |
CN109710629A (zh) | 数据访问方法、装置、服务器和存储介质 | |
EP0037264A2 (en) | Associative memory system | |
CN109446258A (zh) | 一种分布式数据存储方法及系统 | |
US7318168B2 (en) | Bit map write logging with write order preservation in support asynchronous update of secondary storage | |
CN104220982B (zh) | 一种事务处理方法与装置 | |
US8904348B2 (en) | Method and system for handling errors during script execution | |
WO2013024927A1 (ko) | 오픈 데이터베이스 관리 시스템 | |
CN110390969A (zh) | 一种实现原子写的方法和系统 | |
JP2586610B2 (ja) | ファイル作成方式 | |
JPS62226367A (ja) | デイジタル計算機システム | |
CN115185648A (zh) | 内存数据操作的事务处理方法 | |
CN111125053A (zh) | 一种优化数据库写入速率的方法和设备 | |
CN116501812A (zh) | Ddl语句执行方法及装置 | |
KR101690282B1 (ko) | 테이블스페이스 속성 변경 방법 및 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180629 |