CN104537074A - 一种提高数据库系统写日志性能的方法 - Google Patents

一种提高数据库系统写日志性能的方法 Download PDF

Info

Publication number
CN104537074A
CN104537074A CN201410847869.XA CN201410847869A CN104537074A CN 104537074 A CN104537074 A CN 104537074A CN 201410847869 A CN201410847869 A CN 201410847869A CN 104537074 A CN104537074 A CN 104537074A
Authority
CN
China
Prior art keywords
daily record
write
api
database
log
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
Application number
CN201410847869.XA
Other languages
English (en)
Inventor
孔德生
崔维力
武新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd
Original Assignee
TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd filed Critical TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd
Priority to CN201410847869.XA priority Critical patent/CN104537074A/zh
Publication of CN104537074A publication Critical patent/CN104537074A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Abstract

本发明提供一种提高数据库系统写日志性能的方法,所述的方法包括:将数据库系统写日志的接口,从直接写文件变成写共享内存;采用无锁数据结构,支持多线程并行写入;独立的Logd进程,定期或者溢出触发方式,将共享内存中的日志数据批量写入日志文件。数据库进程崩溃而重启后,日志API会寻找共享内存中上次写入的位置,从而继续写入。本发明能够提高数据库系统写日志的性能,并且对系统的性能无影响。

Description

一种提高数据库系统写日志性能的方法
技术领域
本发明属于数据库领域,尤其涉及一种提高数据库系统写日志性能的方法。
背景技术
在数据库系统中,通常采用日志文件的方式,记录数据库系统运行过程中的各种行为、事件,从而为系统性能分析、故障诊断、Bug排除、日志统计等提供基础数据。然而,在高性能计算的场景下,开启日志,会对数据库系统的性能造成很大影响,尤其是在日志级别较高的情况下,短时间会产生大量日志数据,而磁盘又是IO最慢的设备,并且数据库进程并发写入日志文件时需要用锁来控制实现串行化,这些因素都导致了日志写入会导致数据库系统的性能急剧下降。如果不开启日志,又无法记录下详细的信息,导致无法进行性能诊断和故障分析。因此,会陷入两难的状态。
因此,数据库系统需要提供高性能的日志写入方法,并且不能对系统的性能产生过多的影响。
发明内容
本发明要解决的问题是提供一种提高数据库系统写日志性能的方法,以满足数据库在线性能分析和故障诊断的要求。
为达到上述目的,本发明采用的技术方案是:一种提高数据库系统写日志性能的方法,其特征在于,包括如下步骤:
(1)启动Logd日志守护进程,Logd日志守护进程根据配置参数,在共享内存中初始化日志缓冲区;
(3)数据库系统采用封装的日志API将日志写入共享内存区域;
(3)日志API采用无锁数据结构保存日志,从而支持多线程高并发写 入;
(4)Logd将日志批量写入日志文件;
(5)数据库进程异常崩溃或者正常退出,共享内存中的日志依然存在,不丢失。
进一步的,所述步骤(2)具体实现方式为:
日志API定位Logd初始化的共享内存日志缓冲区,确定下次写日志的内存位置,数据库进行调用API写入日志时,API把日志信息写入共享内存区域。
进一步的,所述步骤(4)中,Logd通过定时或者是事件触发方式将日志批量写入日志文件。
进一步的,所述步骤(5)的实现方式为:
数据库进程崩溃而重启后,再次写入日志时,日志API定位共享内存中的log buffer时,找到上次写入的位置,并校验上次日志数据写入的完整性,如日志写入完整,则在此位置继续写入,从而保证进程崩溃的情况下日志不丢失。
本发明的有益效果是:能显著提高数据库系统写日志的性能,对数据库本身的计算性能无影响,可以在线开启高级别日志,捕获大量日志信息,从而可以进行详细的问题诊断和分析。
附图说明
图1数据库传统写日志方法的示意图;
图2是本发明数据库写日志方法的示意图;
图3是本发明方法实施的流程图;
图4是本发明方法的交互序列图。。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,传统的数据库系统日志方法为通过API函数直接写本地日志。
如图2所示为本发明的数据库进程写日志的结构。
实施过程的流程图如图3所示。具体实施过程为:
(1)数据库进程采用API进行代码编译链接,生成可执行文件;
(2)启动Logd日志守护进程。Logd日志守护进程会根据配置参数,在共享内存中初始化日志缓冲区,同时打开磁盘的日志文件,移动到日志文件的尾部,用于新日志的写入。功能内存的日志区域大小、磁盘日志文件个数、大小都可以通过logd的参数配置来实现。
(3)启动数据库进程。数据库进程通过API定位logd初始化的共享内存日志缓冲区,确定下次写日志的内存位置。数据库进行调用API写入日志时,API会把日志信息写入共享内存区域。
(4)数据库进程通过API高速向共享内存写入日志。日志API采用无锁数据结构,并行将日志信息放入共享内存中;为了提高多线程并发写入的性能,日志API采用无锁的数据结构,并保证日志记录的完整性。
(5)Logd通过定时或者是事件触发方式,将日志从Log buffer写入Log file。Logd监测共享内存中的日志数据,日志数据超过预设的阈值时会触发写日志动作,Logd将日志批量写入日志文件。
(6)数据库进程异常崩溃或者正常退出,共享内存中的日志依然存在,不丢失。数据库进程崩溃而重启后,再次写入日志时,日志API定位共享内存中的log buffer时,会找到上次写入的位置,并校验上次日志数据写入的完整性,如日志写入完整,则在此位置继续写入,从而保证进程崩溃的情况下日志不丢失。
(7)下次数据库进程启动,Log API重新定位Log buffer,确定写Log的位置和相关参数。
以上对本发明的实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明范围所作的均等变化与改进等,均应仍归属于本专利涵盖范围之内。

Claims (4)

1.一种提高数据库系统写日志性能的方法,其特征在于,包括如下步骤:
(1)启动Logd日志守护进程,Logd日志守护进程根据配置参数,在共享内存中初始化日志缓冲区;
(2)数据库系统采用封装的日志API将日志写入共享内存区域;
(3)日志API采用无锁数据结构保存日志,从而支持多线程高并发写入;
(4)Logd将日志批量写入日志文件;
(5)数据库进程异常崩溃或者正常退出,共享内存中的日志依然存在,不丢失。
2.根据权利要求1所述的一种提高数据库系统写日志性能的方法,其特征在于:所述步骤(2)具体实现方式为:
日志API定位Logd初始化的共享内存日志缓冲区,确定下次写日志的内存位置,数据库进行调用API写入日志时,API把日志信息写入共享内存区域。
3.根据权利要求1所述的一种提高数据库系统写日志性能的方法,其特征在于:所述步骤(4)中,Logd通过定时或者是事件触发方式将日志批量写入日志文件。
4.根据权利要求1所述的一种提高数据库系统写日志性能的方法,其特征在于:所述步骤(5)的实现方式为:
数据库进程崩溃而重启后,再次写入日志时,日志API定位共享内存中的log buffer时,找到上次写入的位置,并校验上次日志数据写入的完整性,如日志写入完整,则在此位置继续写入,从而保证进程崩溃的情况下日志不丢失。
CN201410847869.XA 2014-12-31 2014-12-31 一种提高数据库系统写日志性能的方法 Pending CN104537074A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410847869.XA CN104537074A (zh) 2014-12-31 2014-12-31 一种提高数据库系统写日志性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410847869.XA CN104537074A (zh) 2014-12-31 2014-12-31 一种提高数据库系统写日志性能的方法

Publications (1)

Publication Number Publication Date
CN104537074A true CN104537074A (zh) 2015-04-22

Family

ID=52852602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410847869.XA Pending CN104537074A (zh) 2014-12-31 2014-12-31 一种提高数据库系统写日志性能的方法

Country Status (1)

Country Link
CN (1) CN104537074A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201756A (zh) * 2016-07-12 2016-12-07 努比亚技术有限公司 日志获取装置、移动终端及方法
CN106202307A (zh) * 2016-07-01 2016-12-07 百势软件(北京)有限公司 一种批量日志保存方法及装置
CN107729217A (zh) * 2017-10-30 2018-02-23 郑州云海信息技术有限公司 一种数据库异常处理方法和终端
CN108170768A (zh) * 2017-12-25 2018-06-15 腾讯科技(深圳)有限公司 数据库同步方法、装置及可读介质
CN108319543A (zh) * 2018-01-24 2018-07-24 广州江南科友科技股份有限公司 一种计算机日志数据的异步处理方法及其介质、系统
CN109189726A (zh) * 2018-08-08 2019-01-11 北京奇安信科技有限公司 一种读写日志的处理方法及装置
CN109446174A (zh) * 2018-10-30 2019-03-08 东软集团股份有限公司 日志数据记录方法、装置及计算机可读存储介质
CN109471743A (zh) * 2018-11-12 2019-03-15 深圳前海微众银行股份有限公司 日志收集方法、装置及计算机可读存储介质
CN113672572A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1470992A (zh) * 2002-07-23 2004-01-28 华为技术有限公司 一种对利用共享内存对象记录普通进程异常退出的定位方法
CN1567248A (zh) * 2003-07-01 2005-01-19 华为技术有限公司 应用程序日志记录方法及系统
CN101719165A (zh) * 2010-01-12 2010-06-02 山东高效能服务器和存储研究院 一种实现数据库高效快速备份的方法
CN103645863A (zh) * 2013-12-12 2014-03-19 北京奇虎科技有限公司 共享内存的数据读取方法和系统、写入方法和系统
CN103885726A (zh) * 2014-03-20 2014-06-25 东蓝数码股份有限公司 一种高效的多线程日志写入方法
CN104182360A (zh) * 2014-08-18 2014-12-03 记忆科技(深圳)有限公司 多核环境的跟踪日志输出处理方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1470992A (zh) * 2002-07-23 2004-01-28 华为技术有限公司 一种对利用共享内存对象记录普通进程异常退出的定位方法
CN1567248A (zh) * 2003-07-01 2005-01-19 华为技术有限公司 应用程序日志记录方法及系统
CN101719165A (zh) * 2010-01-12 2010-06-02 山东高效能服务器和存储研究院 一种实现数据库高效快速备份的方法
CN103645863A (zh) * 2013-12-12 2014-03-19 北京奇虎科技有限公司 共享内存的数据读取方法和系统、写入方法和系统
CN103885726A (zh) * 2014-03-20 2014-06-25 东蓝数码股份有限公司 一种高效的多线程日志写入方法
CN104182360A (zh) * 2014-08-18 2014-12-03 记忆科技(深圳)有限公司 多核环境的跟踪日志输出处理方法及系统

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106202307A (zh) * 2016-07-01 2016-12-07 百势软件(北京)有限公司 一种批量日志保存方法及装置
CN106202307B (zh) * 2016-07-01 2019-10-11 百势软件(北京)有限公司 一种批量日志保存方法及装置
CN106201756B (zh) * 2016-07-12 2019-09-06 努比亚技术有限公司 日志获取装置、移动终端及方法
CN106201756A (zh) * 2016-07-12 2016-12-07 努比亚技术有限公司 日志获取装置、移动终端及方法
CN107729217A (zh) * 2017-10-30 2018-02-23 郑州云海信息技术有限公司 一种数据库异常处理方法和终端
CN108170768A (zh) * 2017-12-25 2018-06-15 腾讯科技(深圳)有限公司 数据库同步方法、装置及可读介质
CN108170768B (zh) * 2017-12-25 2023-03-24 腾讯科技(深圳)有限公司 数据库同步方法、装置及可读介质
CN108319543A (zh) * 2018-01-24 2018-07-24 广州江南科友科技股份有限公司 一种计算机日志数据的异步处理方法及其介质、系统
CN109189726A (zh) * 2018-08-08 2019-01-11 北京奇安信科技有限公司 一种读写日志的处理方法及装置
CN109189726B (zh) * 2018-08-08 2020-12-22 奇安信科技集团股份有限公司 一种读写日志的处理方法及装置
CN109446174A (zh) * 2018-10-30 2019-03-08 东软集团股份有限公司 日志数据记录方法、装置及计算机可读存储介质
CN109471743A (zh) * 2018-11-12 2019-03-15 深圳前海微众银行股份有限公司 日志收集方法、装置及计算机可读存储介质
CN113672572A (zh) * 2021-08-28 2021-11-19 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法
CN113672572B (zh) * 2021-08-28 2024-02-09 芯河半导体科技(无锡)有限公司 一种嵌入式linux系统syslog的日志存储方法

Similar Documents

Publication Publication Date Title
CN104537074A (zh) 一种提高数据库系统写日志性能的方法
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
CN102541691B (zh) 面向内存数据库oltp应用的日志检查点恢复方法
EP2901268A1 (en) Methods and systems for performing a replay execution
CN102609337A (zh) 一种内存数据库快速数据恢复方法
CN103885726A (zh) 一种高效的多线程日志写入方法
US20120278544A1 (en) Flash memory controller
CN111221922A (zh) 一种RocksDB数据库数据写入方法及RocksDB数据库
CN106469123A (zh) 一种基于nvdimm的写缓存分配、释放方法及其装置
CN106469119B (zh) 一种基于nvdimm的数据写缓存方法及其装置
WO2023277819A3 (zh) 数据处理方法、系统、设备、计算机程序产品及存储功能
TWI588652B (zh) 讀取及寫入命令排程方法以及使用該方法的裝置
US11813538B2 (en) Videogame telemetry data and game asset tracker for session recordings
US20160070648A1 (en) Data storage system and operation method thereof
CN105302488A (zh) 一种存储系统的数据写入方法及系统
CN102609486A (zh) 一种Linux文件系统的数据读写加速方法
CN105095418B (zh) 一种处理写请求的方法和装置
CN104239226A (zh) 一种采用独立高速缓存的iSCSI存储服务器设计方法
CN102200949A (zh) 多控存储系统实现控制器故障保护的装置及方法
CN106033368B (zh) 一种多核虚拟机确定性重演的方法
TWI648620B (zh) 記憶體裝置以及操作指令錯誤處理方法
CN104063252B (zh) 基于dsp芯片的带有看门狗电路的程序烧写与回读方法
CN107193558B (zh) 一种日志文件的生成方法和装置
CN103488433A (zh) 一种基于分布式文件系统的批量文件操作方法及系统
CN103034565A (zh) 一种大规模3d数据编辑期的灾难恢复方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 20150422