En regardant l'explication du paramètre max_binlog_stmt_cache_size, il existe une telle phrase. Si les instructions non transactionnelles dans une transaction nécessitent plus de ce nombre d'octets de mémoire, le serveur génère une erreur.
Alors, que sont-ils ? des déclarations non transactionnelles ?
Recherchez le mot-clé non transactionnel sur http://dev.mysql.com/, et le premier qui apparaît est Rollback Failure for Nontransactional Tables.
Alors, que sont les tables non transactionnelles ?
Tables non transactionnelles, tables non transactionnelles, tables qui ne prennent pas en charge les transactions, c'est-à-dire les tables qui utilisent le moteur de stockage MyISAM.
La caractéristique de la table non transactionnelle est qu'elle ne prend pas en charge la restauration. Regardez l'exemple suivant
>create table no_trans(id int) ENGINE=MyiSAM; >start transaction; >insert into no_trans values(1); >select * from no_trans; +------+ | id | +------+ | 1 | +------+ 1 row in set (0.00 sec) >rollback; Query OK, 0 rows affected, 1 warning (0.00 sec) >show warnings; +---------+------+---------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------+ | Warning | 1196 | Some non-transactional changed tables couldn't be rolled back | +---------+------+---------------------------------------------------------------+ 1 row in set (0.00 sec) >select * from no_trans; +------+ | id | +------+ | 1 | +------+ 1 row in set (0.00 sec)
Vous pouvez voir que la restauration de la table non transactionnelle renvoie un avertissement, indiquant que la table non transactionnelle ne prend pas en charge la restauration.
Par rapport aux objets de table non transactionnels, les tables de transaction, telles que les tables utilisant InnoDB, prennent en charge les opérations de restauration.
>create table trans(id int); >start transaction; >insert into trans values(1); >select * from trans; +------+ | id | +------+ | 1 | +------+ 1 row in set (0.00 sec) >rollback; Query OK, 0 rows affected (0.00 sec) >select * from trans; Empty set (0.00 sec)
On peut conclure que les déclarations non transactionnelles désignent des déclarations qui exploitent des tables non transactionnelles.
max_binlog_stmt_cache_size Ce paramètre affecte les tables non transactionnelles, telles que MyISAM. Si ce paramètre n'est pas suffisant, il vous demandera que plus d'espace est nécessaire.
max_binlog_cache_size Ce paramètre affecte les tables de transactions, telles que InnoDB. Si ce paramètre n'est pas suffisant, il vous demandera que plus d'espace est nécessaire.
Ce qui précède est le contenu des tables de transactions MySQL et des tables de non-transaction. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !