我是MySQL的初学者,正在寻找专家建议...
我需要创建4个日志存储过程:
在这样的存储过程中使用它们:
START TRANSACTION;
CALL open_log('ETL_ABC', 'Running ETL process ABC');
CALL begin_action('Refreshing Dimensions', 'CUSTOMERS, PRODUCTS, STORES');
MERGE INTO customers ...;
MERGE INTO products ...;
MERGE INTO stores' ...;
CALL end_action('Done');
CALL begin_action('Loading new SALES data', 'For 01-APR-2018');
INSERT INTO sales ...;
CALL end_action('... rows added');
CALL close_log('Successfully completed');
COMMIT;
OPEN_LOG过程应在PROCESS_LOGS表中插入1行。 CLOSE_LOG过程应使用RESULT和END_DATE_TIME值更新该行。 BEGIN_ACTION过程应在LOG_DATA表中插入1行。 END_ACTION过程应在同一LOG_DATA表中插入另一行。所有这些插入和更新应独立于主事务。
系统中可能有许多ETL进程同时在运行,并使用此日志记录机制。同时,支持人员可以手动查询这些日志记录表,以查看正在运行的进程以及进程处于什么阶段。
在Oracle中,我可以通过使用PRAGMA AUTONOMOUS_TRANSACTION声明日志记录过程来实现这一目标。
在MySQL / MariaDB中,我相信我唯一的选择是对日志表使用MyISAM存储引擎。我关心的是并发性。我估计我可能需要允许每秒最多100个日志写入和每分钟最多10个查询。查询应该很快,因为两个日志表都将正确索引。
请给我您的意见/选择。