大家看题目应该清楚下面想讨论的问题了吧。平常的日志信息,到底是记录到数据库中,还是记录到文件中?在发表这篇文章之前,我也google 了一下,下面几个链接供大家讨论时的参考。
- http://stackoverflow.com/questions/1160720/log-to-database-instead-of-log-files
- http://hungred.com/useful-information/best-way-log-details-database-or-file-log/
其实问题主要有以下几个:
- 实现的难易程度(从java平台来讲);
- 性能(千古不变的话题);
- 可扩展性;
- 是否可分析(无法分析的日志系统没有任何意义);
下面我简单说一下我的观点,剩下的请大家自由发挥:
首先,文件日志实现最简单。文件日志不需要额外的工作,不需要其他的外部资源(比如数据库连接)。利用现有的log4j等框架就可以。但是数据库日志就没有什么现成的解决方案,需要从头设计。肯定要考虑的因素包括日志数据表的可扩展性,因为日志的信息量是巨大的,不采用分库、分表等数据库优化技术,将使得日志的记录和查询都相当缓慢。这反过来又增加了数据库日志的实现难度。尤其是对于没有采用分库、分表的项目来说,为了日志模块,需要增加相应的接口;
其次,文件日志性能比较高(在合理配置log4j的情况下,比如每小时滚动一次日志文件)。和数据库日志相比,至少没有网络传输的时间。但是要控制日志文件的大小,日志文件太大以后,性能反而不如数据库日志(有兴趣的朋友可以试一下);
最后,就是是否可分析了。很多同学说日志文件不好分析,一行一行看很麻烦,而且文件很大,打开文件都很困难。其实可能是不太了解一些文件分析工具或者命令。比如在linux下采用grep等。但是由于文件日志会导致大量的小文件,比如按小时分,一天就有24个日志文件。因此文件的合并分析可能是个问题;数据库日志在大家的看法里,应该是比较好分析的,因为大家都熟悉SQL。但是相应的,如果采用了分库分表的技术,SQL分析同样是困难的。而且数据库结构远没有文件结构方便变化,因为你要增减字段。而文件只是结构不同而已,不用修改任何结构定义。
好了,我说了这么多了,就等大家来讨论了。。。
分享到:
相关推荐
总结起来,Android 9.0及以上版本中遇到“File opened that is not a database file file is encrypted or is not a database”的问题,主要是由于WAL模式的默认开启。开发者需要了解这一变化,并适当地调整代码,...
- 使用以下SQL语句:`ALTER DATABASE FORCE LOGGING;` 2. **创建Password File** - Password File用于存储SYS用户的加密密码,DataGuard环境中的所有数据库都需要这个文件,且SYS用户的密码必须相同。 - 如果...
例如:`CREATE TABLESPACE tablespace_name DATAFILE 'c:\oracle\oradata\file1.dbf' SIZE 100M, 'c:\oracle\oradata\file2.dbf' SIZE 100M MINIMUM EXTENT 550K [LOGGING/NOLOGGING] DEFAULT STORAGE (INITIAL 500K...
7. **ABAP Managed Database Procedures(AMDP)** 和 **SQL Logging**: - 在处理数据库操作时,可以启用SQL日志来跟踪和优化数据库访问。AMDP中,日志记录可以通过在方法声明中使用`LOG-ON`和`LOG-OFF`来控制。 8....
- 检查设置:`SELECT LOG_MODE, FORCE_LOGGING FROM v$DATABASE;` 归档模式和强制日志记录对于物理备用数据库的创建和维护至关重要,确保所有操作都被记录并存储在归档日志中。 2. **网络配置**: - 在主库和备...
1. 创建表空间:使用`create tablespace ts_name datafile 'c:oracleoradatafile1.dbf' size 100m , 'c:oracleoradatafile2.dbf' size 100m minimum extent 550k [logging/nologging] default storage (init, ...);...
5. **使用WAL模式**:Write-Ahead Logging(预写日志)模式能有效减少锁定时间,提高并发性能,它是SQLite 3.7.0版本引入的新特性。 四、代码实例 以下是一个Python示例,展示了如何处理“database is locked”错误...
- **命令**: `ALTER DATABASE ADD LOGFILE GROUP [GROUP ID] ('LOGFILE_PATH1', 'LOGFILE_PATH2') SIZE [SIZE];` - **说明**: 该命令用于添加新的在线重做日志组。通过指定不同的路径可以提高系统的冗余度。 - **...
SQL scripts can be written in Full Convert editor, or dynamically loaded from external file, even if it is compressed - and file type mask can be specified to ignore certain files Global Options SQL ...
1. 创建表空间:`sql> create tablespace tablespace_name datafile 'c:\oracle\oradata\file1.dbf' size 100m, 'c:\oracle\oradata\file2.dbf' size 100m minimum extent 550k [logging/nologging] default storage...
`create tablespace tablespace_name datafile 'path_to_datafile' size 100m, 'path_to_datafile' size 100m minimum extent 550k [logging/nologging] default storage (initial 500k next 500k maxextents 500 ...
ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE '<path_to_logfile>'; ``` **示例:** ```sql SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE 'c:/oracle/log2a.rdo'; ``` ##### 9. 使用LogMiner分析重做日志文件...
1. **创建表空间**:`create tablespace tablespace_name datafile 'c:\oracle\oradata\file1.dbf' size 100m, 'c:\oracle\oradata\file2.dbf' size 100m minimum extent 550k [logging/nologging] default storage ...
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 ('+DATA') SIZE 521M; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 31 ('+DATA') SIZE 521M; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP...
CREATE TABLESPACE tablespace_name DATAFILE 'c:\oracle\oradata\file1.dbf' SIZE 100M, 'c:\oracle\oradata\file2.dbf' SIZE 100M MINIMUM EXTENT 550K LOGGING DEFAULT STORAGE (INITIAL 500K NEXT 500K ...
- `recover database using backup control file`:当原始控制文件丢失或损坏时,使用备份的控制文件来恢复数据库。 ##### 10. 创建控制文件(Create Control File) ``` CREATE CONTROLFILE REUSE DATABASE ...
ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE '<file_path>'; ``` **描述**: 使用此命令可以清空指定的未归档重做日志文件。例如,要清空位于`c:/oracle/log2a.rdo`的文件: ``` ALTER DATABASE CLEAR UNARCHIVED ...
当重做日志文件由于某些原因变得不可用时,可以使用`ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE`命令尝试清除并复用它们。 #### 9. 使用LogMiner分析重做日志文件 LogMiner是Oracle提供的一种工具,用于分析重做...