my.ini
#可選引數有:read-uncommitted, read-committed, repeatable-read, serializable.
[mysqld]
transaction-isolation = repeatable-read
當前session
select @@tx_isolation;
settransaction
isolation
level
read uncommitted;
settransaction
isolation
level
read committed;
settransaction
isolation
level repeatable read;
settransaction
isolation
level serializable;
再看看隔離級別對應解決了的問題
//session1
set autocommit = 0;
settransaction
isolation
level
read uncommitted;
begin;
update biz_pay_task set pin = 'test1'
where id=1;
// session 2
set autocommit = 0;
settransaction
isolation
level
read uncommitted;
select * from biz_pay_task where id=1;
// session1,2
rollback;
// session 1,2
settransaction
isolation
level
read committed;
// session 1
update biz_pay_task set pin = 'test1'
where id=1;
// session 2
select * from biz_pay_task where id=1;
// session 1
commit;
// session 2
select * from biz_pay_task where id=1;
rollback;
// session 1,2
settransaction
isolation
level repeatable read;
begin;
// session 1
update biz_pay_task set pin = 'test2'
where id=1;
commit;
// session 2
select * from biz_pay_task where id=1;
rollback;
begin;
select * from biz_pay_task where id between 1
and3;
// session 1
begin;
delete
from biz_pay_task where id=2;
// session 2
select * from biz_pay_task where id between 1
and3;
// session 1
commit;
// session 2
select * from biz_pay_task where id between 1
and3;
rollback;
強制事務順序執行
mysql使用事務日誌來提高寫的效能,不是每次都用隨機io來寫硬碟,
而是先寫記憶體,記錄硬碟一小塊區域順序io的寫日誌
另外有執行緒把事務日誌回寫回資料區域硬碟
MySQL學習第三天
create table if not exists user id tinyint,engine innoob charset utf8 之後使用desc name 你會驚奇的發現tinyint後面多出了乙個4 那是因為tinyint可以表示128,符號也代表一位,它是資料寬度 即便你設定資料寬度...
初學MYSQL第三天
語法 select 查詢列表 from 表名 where 篩選條件 一 按條件表示式篩選 條件運算子 案例1 查詢工資 12000的員工資訊 select from employees where salary 12000 案例2 查詢部門編號不等於90號的員工名和部門編號 select last ...
MySQL學習第三天
如果有其它觀點可以提出來奧 什麼是連線查詢 多張表連起來查詢。如果把全部資料儲存在一張表內的話,會導致資料重複,導致資料的冗餘。在乙個資料集合中重複的資料叫做資料冗餘 連線查詢分類 根據語法劃分 sql92 sql99 sql99語法結構更清晰一些,表的連線條件和後來的where條件分離了。sql9...