Deadlock в MySQL

Это магическое пугающее слово deadlock =)

Получить его в мускуле достаточно просто:

Transaction #1
BEGIN;
SELECT * FROM `testlock` WHERE id=1 LOCK IN SHARE MODE; /* GET S LOCK */
SELECT SLEEP(5);
SELECT * FROM `testlock` WHERE id=1 FOR UPDATE; /* TRY TO GET X LOCK */
COMMIT;

Transaction #2
BEGIN;
SELECT * FROM `testlock` WHERE id=1 FOR UPDATE; /* TRY TO GET X LOCK - DEADLOCK AND ROLLBACK HERE */
COMMIT;

Первая транзакция лочит данные, вторая пытается получить лок ДРУГОГО типа этих же данных и ждет, в это время первая транзакция тоже хочет получить еще и блокировку ДРУГОГО типа. В итоге они ждут друг друга и так до бесконечности.

Описание ситуации.

Числа Фибоначчи

Для расчета какого-то числа Фибоначчи необязательно брутфорсить, т.е. перебирать всю последовательность методом сложения. Есть прекрасная Формула Бине. По ней прекрасно можно найти n-й элемент последовательности.

А если воспользоваться еще и асимптотикой, т.е. упрощенной формулой, то легко найти нужное число, как ближайшее целое число к результатам этой функции.

Ну и наконец мы можем таким образом найти n, при котором число Фибоначчи перевалит, например, за 1000 знаков, по формуле: i * Math.log10(phi) + Math.log10(1/Math.sqrt(5)) , где phi — так называемое Золотое сечение. Вычисляется по формуле (Math.sqrt(5) + 1) / 2

Почему формула такая? Да потому что следуем условию, что phi**n/sqrt(5) > 10**999 (** — степень, 10**999 — это первое число, у которого 1000 знаков)

Кстати, все это можно вычислить ручкой на бумаге без калькулятора (приблизительно). Квадратные корни вычисляются делением столбиком. Логарифмы тоже можно посчитать.

Закат на Оке

Оказался в последний момент на Оке, чтобы поймать последние лучи светила. Температура резко свалилась с +20 до +13. На островке стоял рыбак. Почти тишина, лишь где-то слева бурчит плавучий буксир, медленно пробираясь сквозь буи на воде, следуя каким-то своим маршрутом. В какой-то момент вытесненная им вда практически накрывает островок рыбака. Физика. Гидродинамика, кажется. Ну а мы ретируемся, т.к. становится очень холодно, а до дома еше долгий путь.

GPS: 54.819108, 37.245432

ФОТОГРАФИИ

Черно-белая Калуга

Что делать в Калуге? Например, заглянуть на какой-нибудь чемпионат по кабельному вейкбордингу. А затем гулять по городу, наслаждаться теплом, пустынными старыми улицами, видами на реку с высоты. А можно посидеть на берегу залива, наблюдая за виндсерферами.

Так почему же фотографии черно-белые? Настроение. Да и свет понравился. В черно-белом варианте нагромождение всего на все. Надо присмотреться и постараться понять, какой же объект я хотел запечатлеть. А так есть какие-то выделяющиеся линии, акцент, контраст.

Что смотреть в городе? Не знаю. Под Калугой есть много интересного. Это и Этномир, и Архстояние, и различные глухие места с заброшками.

GPS: 54.516181, 36.245067

ФОТОГРАФИИ

Блог о скитаниях в этом мире