在数据库中存储堆栈跟踪的最佳方法是什么

时间:2011-05-18 09:23:01

标签: java database stack-trace

我正在寻找存储堆栈跟踪(通过Thread.dumpStack()获得)和数据库中的异常跟踪的最佳方法。

我正在开发一款能够提升应用性能的应用。它跟踪方法调用(持续时间),捕获错误(导致异常跟踪)&为慢速执行生成堆栈跟踪。

环境是Java + MySQL 5.0

目前,网络请求的跟踪信息&堆栈跟踪存储在文件中(如json),元数据存储在数据库表中。

报告&复制目的,我正在考虑将它们存储在数据库中。平均而言,完整跟踪信息的大小为40 kb。将它们存储在数据库中或将其保存在文件系统中并移至nosql是否明智。

转到nosql,我可以解决复制问题,但报告仍然很难。

1 个答案:

答案 0 :(得分:1)

为什么不将报告所需的其他信息存储为“元数据”的一部分?将完整的堆栈跟踪存储在文件中并根据应用程序的需要在DB中存储对该文件的引用可能没有任何问题。我会考虑您需要报告的内容并评估这些元素以包含在数据库中。例如,您是否报告了异常的根本原因?考虑将数据预处理到您需要报告的内容。如果您已经单独保存整个堆栈跟踪,那么如果您将来需要报告其他内容,则不会丢失任何信息。

很久以前就问过这个问题,所以我假设你已经做出了决定,但是如果没有明确的理由,我会犹豫是否转向nosql架构。关系数据库在某些情况下仍然占有一席之地,并且它们中的大多数具有用于存储大量文本的有效机制(例如,堆栈跟踪)。