MyRocks и групповая фиксация с бинарным журналом
MyRocks поддерживает групповую фиксацию с бинарным журналом (MDEV-11934).
Значения счётчиков, за которыми следует наблюдать
(Следующее необходимо только при изучении внутренних механизмов MyRocks)
Счётчики групповой фиксации MariaDB:
Binlog_commits — количество транзакций, записанных в бинарный журнал
Binlog_group_commits — количество произошедших групповых фиксаций. (Например, если в каждой группе было две транзакции, это значение будет в два раза меньше, чем Binlog_commits)
Со стороны RocksDB есть один релевантный счётчик: Rocksdb_wal_synced — количество раз, когда файл журнала WAL RocksDB был синхронизирован. (TODO: это происходит после групповой фиксации, правильно?)
О значении rocksdb_wal_group_syncs
FB/MySQL-5.6 имеет счётчик rocksdb_wal_group_syncs (счётчик предоставляется MyRocks, он не является отображением счётчика RocksDB). Он увеличивается в rocksdb_flush_wal() при вызове rdb->FlushWAL().
rocksdb_flush_wal() вызывается групповой фиксацией MySQL, когда она хочет сделать постоянными результаты нескольких вызовов rocksdb_prepare().
Таким образом, значение rocksdb_wal_group_syncs в FB/MySQL-5.6 аналогично значению Binlog_group_commits в MariaDB.
В MariaDB нет такого вызова, каждый вызов rocksdb_prepare() сам отвечает за свою постоянность.
Из-за этого rocksdb_wal_group_syncs равен нулю для MariaDB. (В настоящее время он увеличивается только при переключении бинарного журнала).
Примеры
Итак, для рабочей нагрузки с concurrency=50, n_queries=10K, получаем
- Binlog_commits=10K
- Binlog_group_commits=794
- Rocksdb_wal_synced=8362
Это на RAM-диске
Для рабочей нагрузки с concurrency=50, n_queries=10K, вращающийся жёсткий диск ноутбука, получаем
- Binlog_commits= 10K
- Binlog_group_commits=1403
- Rocksdb_wal_synced=400
Тест занял 38 секунд, число синхронизаций было 1400+400=1800, что даёт 45 синхронизаций/сек, что выглядит нормально для медленного вращающегося жёсткого диска настольного компьютера.
Обратите внимание, что WAL был синхронизирован меньше раз, чем было групп фиксации бинарного журнала (?)
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/myrocks-and-group-commit-with-binary-log/