kaha db хранилище сообщений для постоянных сообщений

Я знаю, что db-xx.log - это файл журнала, а db.redo - это справочный файл?

В db-xx.log хранятся сообщения, которые еще не используются. Эти сообщения будут удалены из db-xx.log после их использования. db.redo хранит ссылки на сообщения (которые хранятся в db-xx.log) по идентификатору сообщения.

  1. Но что такое db.data и db.free?
  2. Каковы их функции?

Насколько я понимаю, брокер сначала сохраняет сообщения в кэше (который является энергозависимой памятью), а затем эти сообщения перемещаются (добавляются) в db-xx.log, когда контрольная точка или размер кэша заполнены.

  1. Это верно?

Спасибо

2 ответа

Решение

db.data содержит страницы btree, которые ссылаются на неиспользованные сообщения. Db.redo - это журнал повторов обновлений, которые собираются выполнить для db.data. Db.free отслеживает свободные страницы в db.data.

db.redo - это файл восстановления для индексов (db.data). db.free читается и загружается в память во время запуска activemq. Файл удаляется после загрузки свободного списка в память. Как только база данных сообщений выгружена, свободный список записывается обратно в db.free.

После удаления сообщения поведение очереди / темы меняется.

  • В случае очереди она будет удалена из индексного файла. Структура B-дерева будет изменена соответственно.
  • В случае темы, только когда сообщение подтверждено всеми подпрограммами, оно будет удалено.
Другие вопросы по тегам