mysql测试spring事务是否生效
同時對三張表進行插入操作,事務保證完整性。下面進行簡單測試:
1. 鎖定表
鎖定用戶表
LOCK TABLES user WRITE;查看表是否鎖定:
show OPEN TABLES where In_use > 0;顯示被鎖定的表。
2. 驗證在同一session下是否可以插入操作
insert into user(userId,ip,type,terminal) values(10002,'127.0.0.1',7,'pc');可以操作成功。
3. 啟動spring應用,執行插入操作,不能成功。
4,解鎖
UNLOCK TABLES;查看被鎖定的表:
show OPEN TABLES where In_use > 0;上述表不在鎖定中。
5. 調用spring應用,執行插入操作,操作可以成功。
所以,應用spring的@transactional進行事務管理是ok的。
附錄:
?SHOW OPEN TABLES Syntax:https://dev.mysql.com/doc/refman/5.0/en/show-open-tables.html
SHOW OPEN TABLES [{FROM | IN} db_name][LIKE 'pattern' | WHERE expr]SHOW OPEN TABLES?lists the non-TEMPORARY?tables that are currently open in the table cache. SeeSection?8.4.3.1, “How MySQL Opens and Closes Tables”. The?WHERE?clause can be given to select rows using more general conditions, as discussed in?Section?19.18, “Extensions to SHOW Statements”.
The?FROM?and?LIKE?clauses may be used as of MySQL 5.0.12. The?LIKE?clause, if present, indicates which table names to match. The?FROM?clause, if present, restricts the tables shown to those present in the?db_namedatabase.
SHOW OPEN TABLES?output has the following columns:
-
Database
The database containing the table.
-
Table
The table name.
-
In_use
The number of table locks or lock requests there are for the table. For example, if one client acquires a lock for a table using?LOCK TABLE t1 WRITE,?In_use?will be 1. If another client issues?LOCK TABLE t1 WRITE?while the table remains locked, the client will block waiting for the lock, but the lock request causes?In_use?to be 2. If the count is zero, the table is open but not currently being used.?In_use?is also increased by the?HANDLER ... OPENstatement and decreased by?HANDLER ... CLOSE.
-
Name_locked
Whether the table name is locked. Name locking is used for operations such as dropping or renaming tables.
轉載于:https://www.cnblogs.com/davidwang456/p/4882674.html
總結
以上是生活随笔為你收集整理的mysql测试spring事务是否生效的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Writing Images to th
- 下一篇: MySQL数据库InnoDB存储引擎中的