我的数据库有问题。它发展得如此之快。我正在使用MySQL 5.7.24,Spring Boot和History Level Audit。现在我的数据库约为100GB。
有人知道一种技巧或提示如何减小数据库大小吗?我可以从 ACT_GE_BYTEARRAY 删除字节数组还是可以将一些历史记录数据移至另一个数据库?
如果我将一些历史数据移动到另一个数据库,如何从历史服务中访问它?
我桌子的当前大小是:
P.S。我已经开始修改流程,以使用小(简单)变量而不是“大”变量-序列化的对象太大,以减小 ACT_HI_VARINST 的大小。
谢谢。
答案 0 :(得分:1)
您将不得不研究过去一年引入的历史记录生存时间(TTL)功能。您可以定义一个时间间隔,之后将删除旧实例。 如果您仍然需要报告数据,请考虑将其导出到合适的存储中,也许camunda优化/弹性是这里的解决方案。 简而言之:定义TTL并在将重要数据删除之前编写将重要数据存储在其他地方的导出程序。
请记住,(camunda)流程应用程序的存储管理并非易事,这取决于流程的性质(直通还是长期运行)以及审核要求,您将需要一个大型架构。
答案 1 :(得分:0)
也许您应该开始考虑在现有表上创建分区。
由于没有足够的提到的表的信息,因此很难提供代码段,但是下面提到的SQL代码段可能会为您提供帮助:
ALTER TABLE data_table
PARTITION BY RANGE( UNIX_TIMESTAMP(last_updated) ) (
PARTITION p_first VALUES LESS THAN (UNIX_TIMESTAMP('2000-01-01 00:00:00')),
PARTITION p200001 VALUES LESS THAN (UNIX_TIMESTAMP('2005-01-01 00:00:00')),
PARTITION p200501 VALUES LESS THAN (UNIX_TIMESTAMP('2010-01-01 00:00:00')),
PARTITION p201001 VALUES LESS THAN (UNIX_TIMESTAMP('2015-01-01 00:00:00')),
PARTITION p_future VALUES LESS THAN (MAXVALUE) );
一旦创建了这些分区,就应该能够删除旧分区。