>  기사  >  데이터 베이스  >  MySQL 트랜잭션 및 비트랜잭션 테이블

MySQL 트랜잭션 및 비트랜잭션 테이블

黄舟
黄舟원래의
2017-02-06 10:32:292228검색

max_binlog_stmt_cache_size 매개변수에 대한 설명을 보면 이런 문장이 있는데, 트랜잭션 내 비트랜잭션 문이 이 바이트 이상의 메모리를 요구하면 서버에서 오류가 발생합니다.

그럼, 비거래 진술?

http://dev.mysql.com/에서 nontransactional 키워드를 찾아보면 가장 먼저 나오는 것은 Rollback Failure for Nontransactional Tables이다.

그럼 비트랜잭션 테이블이란 무엇인가요?

비트랜잭션 테이블, 비트랜잭션 테이블, 트랜잭션을 지원하지 않는 테이블, 즉 MyISAM 스토리지 엔진을 사용하는 테이블입니다.

비트랜잭션 테이블의 특징은 롤백을 지원하지 않는다는 점입니다. 아래 예시를 보면

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

, 비트랜잭션 테이블의 롤백 시 경고가 발생하는 것을 알 수 있습니다. 비트랜잭션 테이블은 롤백을 지원하지 않습니다.


InnoDB를 사용하는 테이블과 같은 트랜잭션 테이블은 트랜잭션이 아닌 테이블 객체에 비해 롤백 작업을 지원합니다.

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

비트랜잭션 명령문은 비트랜잭션 테이블을 운영하는 명령문을 의미한다고 결론 내릴 수 있습니다.


max_binlog_stmt_cache_size 이 매개변수는 MyISAM과 같은 비트랜잭션 테이블에 영향을 미칩니다. 이 매개변수가 충분하지 않으면 더 많은 공간이 필요하다는 메시지가 표시됩니다.


max_binlog_cache_size 이 매개변수는 InnoDB와 같은 트랜잭션 테이블에 영향을 미칩니다. 이 매개변수가 충분하지 않으면 더 많은 공간이 필요하다는 메시지가 표시됩니다.

위 내용은 MySQL 트랜잭션 테이블과 비트랜잭션 테이블의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.