-
Marko Mäkelä authored
When support for two-phase commit (XA 2PC) was introduced in InnoDB in MySQL 5.0, the session parameter innodb_support_xa=OFF was introduced to disable the functionality, due to perceived overhead in the InnoDB undo log. In a recent benchmark, no performance overhead was observed. So, we will disable the option innodb_support_xa=ON in MySQL 5.7.10, making innodb_support_xa=OFF the only possible value. In a future major version of MySQL, the option can be removed altogether. This parameter is fundamentally broken. (1) When innodb_support_xa=OFF in the current session, the XA PREPARE statement will be silently ignored. That is, if the server is killed after the XA PREPARE completed, the transaction would be rolled back by InnoDB; there is no way to XA COMMIT it after restarting the server. (2) The MySQL binlog internally uses XA 2PC to make itself consistent with the InnoDB undo logs. When innodb_support_xa=OFF, this logic will be broken as well. We deprecate the parameter innodb_support_xa in MySQL 5.7, so that setting it ON or OFF will generate a deprecation warning. At startup, because we cannot easily distinguish an explicitly specified Boolean option from the default value, we will only generate a deprecation warning for --skip-innodb-support-xa. The default value of innodb_support_xa is ON at least since in May 2007 (built-in InnoDB in MySQL 5.1). RB: 10114 Reviewed-by:
Kevin Lewis <kevin.lewis@oracle.com> Reviewed-by:
Bin Su <bin.x.su@oracle.com>
Marko Mäkelä authoredWhen support for two-phase commit (XA 2PC) was introduced in InnoDB in MySQL 5.0, the session parameter innodb_support_xa=OFF was introduced to disable the functionality, due to perceived overhead in the InnoDB undo log. In a recent benchmark, no performance overhead was observed. So, we will disable the option innodb_support_xa=ON in MySQL 5.7.10, making innodb_support_xa=OFF the only possible value. In a future major version of MySQL, the option can be removed altogether. This parameter is fundamentally broken. (1) When innodb_support_xa=OFF in the current session, the XA PREPARE statement will be silently ignored. That is, if the server is killed after the XA PREPARE completed, the transaction would be rolled back by InnoDB; there is no way to XA COMMIT it after restarting the server. (2) The MySQL binlog internally uses XA 2PC to make itself consistent with the InnoDB undo logs. When innodb_support_xa=OFF, this logic will be broken as well. We deprecate the parameter innodb_support_xa in MySQL 5.7, so that setting it ON or OFF will generate a deprecation warning. At startup, because we cannot easily distinguish an explicitly specified Boolean option from the default value, we will only generate a deprecation warning for --skip-innodb-support-xa. The default value of innodb_support_xa is ON at least since in May 2007 (built-in InnoDB in MySQL 5.1). RB: 10114 Reviewed-by:
Kevin Lewis <kevin.lewis@oracle.com> Reviewed-by:
Bin Su <bin.x.su@oracle.com>
Loading