CN104537074A - 一种提高数据库系统写日志性能的方法 - Google Patents
一种提高数据库系统写日志性能的方法 Download PDFInfo
- 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
Links
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
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时,找到上次写入的位置,并校验上次日志数据写入的完整性,如日志写入完整,则在此位置继续写入,从而保证进程崩溃的情况下日志不丢失。
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)
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)
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 | 记忆科技(深圳)有限公司 | 多核环境的跟踪日志输出处理方法及系统 |
-
2014
- 2014-12-31 CN CN201410847869.XA patent/CN104537074A/zh active Pending
Patent Citations (6)
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)
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) | 一种提高数据库系统写日志性能的方法 | |
US8612650B1 (en) | Virtual extension of buffer to reduce buffer overflow during tracing | |
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 | |
CN103186438A (zh) | 一种提高磁盘阵列数据重构效率的方法 | |
CN106469123A (zh) | 一种基于nvdimm的写缓存分配、释放方法及其装置 | |
US20240189724A1 (en) | Videogame telemetry data and game asset tracker for session recordings | |
CN106469119B (zh) | 一种基于nvdimm的数据写缓存方法及其装置 | |
CN102024021A (zh) | 一种逻辑文件系统元数据的日志方法 | |
WO2023277819A3 (zh) | 数据处理方法、系统、设备、计算机程序产品及存储功能 | |
US20160070648A1 (en) | Data storage system and operation method thereof | |
CN105302488A (zh) | 一种存储系统的数据写入方法及系统 | |
CN102609486A (zh) | 一种Linux文件系统的数据读写加速方法 | |
CN104239226A (zh) | 一种采用独立高速缓存的iSCSI存储服务器设计方法 | |
CN106033368B (zh) | 一种多核虚拟机确定性重演的方法 | |
TWI648620B (zh) | 記憶體裝置以及操作指令錯誤處理方法 | |
CN104063252B (zh) | 基于dsp芯片的带有看门狗电路的程序烧写与回读方法 | |
CN107193558B (zh) | 一种日志文件的生成方法和装置 | |
CN105718357B (zh) | 一种内存监视的方法 | |
CN106484564B (zh) | 一种采集数据存储方法 | |
CN103488433A (zh) | 一种基于分布式文件系统的批量文件操作方法及系统 |
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 |