Heim  >  Artikel  >  Datenbank  >  MySQL-Transaktionstabellen und nicht-transaktionale Tabellen

MySQL-Transaktionstabellen und nicht-transaktionale Tabellen

黄舟
黄舟Original
2017-02-06 10:32:292224Durchsuche

Wenn man sich die Erklärung des Parameters max_binlog_stmt_cache_size ansieht, gibt es einen solchen Satz: Wenn nicht-transaktionale Anweisungen innerhalb einer Transaktion mehr als diese viele Bytes Speicher benötigen, generiert der Server einen Fehler.

Also, was sind nichttransaktionale Aussagen?

Suchen Sie unter http://dev.mysql.com/ nach dem Schlüsselwort „nontransactional“. Das erste, das angezeigt wird, ist „Rollback Failure for Nontransactional Tables“.

Was sind also nichttransaktionale Tabellen?

Nicht-transaktionale Tabellen, nicht-transaktionale Tabellen, Tabellen, die keine Transaktionen unterstützen, also Tabellen, die die MyISAM-Speicher-Engine verwenden.

Das Merkmal nicht-transaktionaler Tabellen ist, dass sie kein Rollback unterstützen. Schauen Sie sich das Beispiel unten an

>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)

Sie können sehen, dass das Rollback von nicht-transaktionalen Tabellen eine Warnung auslöst. Dies zeigt an, dass die nicht-transaktionale Tabelle kein Rollback unterstützt.


Im Vergleich zu Nicht-Transaktionstabellenobjekten unterstützen Transaktionstabellen, z. B. Tabellen, die InnoDB verwenden, Rollback-Vorgänge.

>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)

Es kann gefolgert werden, dass nicht-transaktionale Anweisungen Anweisungen bedeuten, die nicht-transaktionale Tabellen betreiben.


max_binlog_stmt_cache_size Dieser Parameter betrifft Nicht-Transaktionstabellen wie MyISAM. Wenn dieser Parameter nicht ausreicht, wird angezeigt, dass mehr Speicherplatz benötigt wird.


max_binlog_cache_size Dieser Parameter betrifft Transaktionstabellen wie InnoDB. Wenn dieser Parameter nicht ausreicht, wird angezeigt, dass mehr Speicherplatz benötigt wird.

Das Obige ist der Inhalt von MySQL-Transaktionstabellen und Nicht-Transaktionstabellen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn