Я сделал PostgreSQL дБ в docker и составил простой план тестирования JMeter для загрузки данных из дБ.
В JDB C Конфигурация соединения JMeter Я меняю уровень изоляции транзакции с DEFAULT
на TRANSACTION_READ_COMMITTED
.
В сводном отчете я последовательно вижу пропускную способность 3,3 тыс. При работе на DEFAULT
в конце 100 тыс. Транзакций в 4-х потоках и 1,8 тыс. При работе на TRANSACTION_READ_COMMITTED
.
Почему при TRANSACTION_READ_COMMITTED
пропускная способность в два раза меньше?
https://www.postgresql.org/docs/current/transaction-iso.html:
В PostgreSQL можно запросить любой из четырех стандартных уровней изоляции транзакции. Но внутри есть только три отдельных уровня изоляции, которые соответствуют уровням Read Committed, Repeatable Read и Serializable. Когда вы выбираете уровень Read Uncommitted, вы действительно получаете Read Committed ... Read Committed - уровень изоляции по умолчанию в PostgreSQL.
TRANSACTION_READ_UNCOMMITTED
в JMeter приводит к той же величине пропускной способности, что и TRANSACTION_READ_COMMITTED
любое значение, отличное от DEFAULT
, приводит к значительно меньшей пропускной способности, чем DEFAULT
.