Mysql 7
7.5.8. модел InnoDB сделка
Назначаване InnoDB модел сделка е да се комбинират най-добрите качества на многовариантно база данни с традиционните двуфазен заключване. За InnoDB таблици са на ниво ред заключване и стандартни заявки се изпълняват като неразделна четене без брави, подобно на начина, по който се изпълнява в Oracle. маса на хранилището за InnoDB е организирана така, че ефективно не е необходимо да се разшири ключалката: обикновено на няколко потребители могат да блокират всеки ред, или всяка съвкупност от редове в базата данни, без цялата памет, достъпна за InnoDB.
В InnoDB таблици, всички потребителски действия са извършени от сделката. Ако MySQL се използва в авто-ангажират режим, отделна сделка се създава за всеки SQL изявление. MySQL винаги се отваря нова връзка с режим autocommit активирана.
Ако режимът на автоматично заключване се деактивира чрез SET AUTOCOMMIT = 0. приемем, че потребителят постоянно има открита сделка. Ако той изпълнява SQL COMMIT изявление или ROLLBACK. че сегашната сделката приключи, веднага след като се стартира нова сделка. И двете посочени от оператора премахва всички брави InnoDB, които бяха създадени по време на настоящата сделка. Комит означава, че промените, направени по време на настоящата сделка, приети и да станат видими за другите потребители. ROLLBACK изявление премахва всички промени, направени от текущата операция.
Ако съединението е настроен AUTOCOMMIT = 1. ползвателя, обаче, може да се използва на сделката, като им се започне с започва и приключва с помощта COMMIT или ROLLBACK.
Потребителят може да промени нивото на изолация за една сесия или нова връзка, както следва:
Обърнете внимание, че името на ниво изолация е изписано без тирето в SQL-израз. Ако посочите глобалната дума по-горе израз, тя ще се определи нивото на изолация за нови връзки, но няма да има ефект за старите връзки. Всеки потребител може да се промени нивото на изолация на сесията, дори в рамките на сделката. В версии по-стари от 23.03.50 SET СДЕЛКИ не се отрази на InnoDB таблици. В версии по-стари от 4.0.5, можете да използвате само при повторно четене и Serializable.
Можете да получите информация за нивото на изолация, или глобално за текущата връзка:
В ред ниво заключване InnoDB използва така наречените следващо ключалки. Това означава, че освен индексни записи InnoDB също може да блокира "интервал" преди индекс рекорд за блокиране на вмъквания от други потребители непосредствено преди записа индекс. Следваща ключ за заключване означава ключалка, която се поставя върху индекс записа и разликата пред нея. Lock интервал се отнася само за да заключите интервал преди някои записи в индекса.
Подробно описание на всяко ниво на изолация в InnoDB:
ПРОЧЕТЕТЕ са поети Също така наречената "мръсна четене": не-заключване за вземане на проби (SELECT) извършва по такъв начин, че ние не виждаме възможност за ранни версии на протокола; така че те са "некоординиран" чете в това ниво изолация; в други случаи, това ниво работи като READ ангажименти.
ПРОЧЕТЕТЕ РЕШЕН Нещо подобно на ниво Oracle изолация. Всички изрази изберете. За актуализиране и SELECT. LOCK на дела MODE блокират само записите на индекса и не блокира слота пред тях. Поради това, те позволяват свободно да добавяте нови записи след блокиран. Актуализиране и изтриване. които използват уникален индекс и уникални условия за търсене да блокират само индекс записа намерени, не на пропастта, преди да бъде блокиран. Въпреки това, обновяване и изтриване тип кръг в InnoDB трябва да зададете следващия заключване или касова брава и блок интервал добавяне на други потребители в рамките на периода, обхванат интервал. Това е необходимо, тъй като "Фантом редове" трябва да бъдат блокирани за успешен репликация и възстановяване в MySQL. Последователно работи като прочетено в Oracle: всеки последователен четене, дори и в рамките на една и съща сделка, набори и чете свой образ и подобие.
При повторно четене ниво Тази изолация се използва по подразбиране InnoDB. SELECT. ЗА UPDATE. SELECT. Катинар в SHARE MODE. UPDATE. И изтриване. които използват уникални индекси и уникално състояние търсене блок само записът индекс намерени и не блокира пролома пред него. В други случаи, операцията използва следващо ключови заключване брави сканирани диапазон индекс или следващата ключова заключване интервал, както и блокира новите попълнения от други потребители.
В последователен гласи има една важна разлика от предишното ниво на изолация: на това ниво вече в съответствие чете в рамките на една и съща сделка прочетете снимката, направена за първо четене. Това споразумение означава, че ако следвате няколко прости селекции (Изберете) в една и съща сделка, тези проби ще бъдат цялостни във връзка един с друг.
Serializable Това ниво е подобна на предишната, но просто SELECT преобразува, за да изберете. Катинар в SHARE MODE.