Pull to refresh
35
0
Сергей Данилов @danx

User

Send message
Ясно, статью вы читали по диагонали. Я же там специально про локи писал.

innodb_lock_wait_timeout=5
innodb_rollback_on_timeout=1
Выбивается только более «легкая» транзакция, и сразу же, моментально, как только был обнаружен дедлок. Никакого таймаута там нет.
Такое чувство, что слово «deadlock» народ неправильно понимает — это не тот случай, когда две транзакции, как бараны, стоят и смотрят друг на друга часами.
10 — чтобы было, и чтобы было больше 2, но меньше бесконечности.
Реальное число retries = 2 (со второй попытки все происходит успешно).

Всё, разумеется, анализируется, и в случае появления 10-й попытки перезапустить транзакцию (в логах) будут применяться уже другие меры — к коду, к порядку написания запросов, и т.д.
Теория одного return из функции. Старая школа.
Эмм… Там так и написано)
которая будет повторять откаченную транзакцию, например так:
Добавлено.
да, меня поправили, правильный термин — идемпотентный. Обновил в посте.
То, чего вы добиваетесь, нужно делать установкой опции binlog-row-image
Introduced 5.6.2
In MySQL 5.5 and earlier, full row images are always used for both before images and after images.

а у меня база 5.5.44. Забыл сказать.
Читайте MySQL документацию, и не учите меня жить) Там написано, что именно нужно всего лишь повторить запрос. Повторный запрос попадет в другие условия на базе (дедлока уже не будет, конфликтующая транзакция уже либо выполнится, либо захватит локи), поэтому повторный запрос либо выполнится успешно сразу, либо немного посидит на локах.
10 — для перестраховки. Я же не зря логгирую это — и по логам, все дедлоки у меня резолвятся со второй попытки.
Отредактировал… Хотя код с передачей аргумента по ссылке был эквивалентен по производительности. Но не суть.
Ставьте теперь плюсики)
Вопрос насчет того, как именно мне передать результат mysqli_query в мою вызывающую функцию, является наименее критичным и наименее важным, на самом деле. Я же не пишу этот код для собеседования в Гугл. Даже регистру букв даже были претензии)
Тот код был чисто для иллюстративных целей.
Цель статьи была не в том, чтобы научить меня азам PHP. Но за ссылку спасибо.
В-третьих — не вижу никакого преимущества в использовании &$result.

Тогда:
— Внутри функции my_mysqli_query создается локальная переменная $result.
— Ей присваивается значение, выбранное из базы (это могут быть сотни строк)
— этот объект возвращается в вызывающую функцию копирующим конструктором:
$Result = my_mysqli_query($link, $query);
— при этом происходит передача значения через стэк, а локальная переменная $result выхоит из cкоупа и разрушается (вызывается деструктор объекта).

Т.е. происходит лишняя операция создания объекта, копирования и разрушения объекта при каждом вызове my_mysqli_query().
Если конечно внутри PHP не реализованы смарт объекты с поддержкой референсов на их юсадж каунт, о чем я не знаю, поэтому полагаться на эту гипотетическую возможность не хочу. Поэтому сужу по опыту из языка С.
Кстати, если бы эти smart objects они были реализованы — то не существовало/не требовалось бы в PHP оператора передачи переменной по ссылке (&), это было бы лишним.
Normally, you must write your applications so that they are always prepared to re-issue a transaction if it gets rolled back because of a deadlock.

dev.mysql.com/doc/refman/5.5/en/innodb-deadlocks.html
Nginx содержит модуль spdy, который зависит от OpenSSL. Выше человек «решил» проблему, просто отключив spdy, а правильнее — пересобрать его. Ваш К.О.
SPDY модуль собран (не вами) со старой версией OpenSSL, и надо его пересобрать, указав ему на новые исходники OpenSSL.
Именно так я сделал для nginx, для апача все должно быть аналогично.
Это неправильный метод.

Пересобрать openssl недостаточно. Надо еще пересобрать nginx с указанием исходников нового openssl, указав опцию --with-openssl, тогда все будет хорошо.
Хакинтош, кстати, с наскоку не заработает. Если мы про последний, Mountain Lion 10.8.3.
Дело в том, что в нем нет ядра, которое запускается на атоме. Разработчики хакинтоша прямо и недвусмысленно об этом говорят, что поддерживать атом не будут, не в этой жизни.
Пруф: tonymacx64.blogspot.ru/2012/10/iatkos-ml-mountain-lion-108-delayed.html#_
Другие образы, не iATKOS, тоже не запустятся, по той же причине. Кстати ошибка Unknown4 of GetVar ровно об этом.

Но выход есть: пару недель назад ядро мака сломали и подточили его — теперь оно работает на атоме:
www.osx86.net/view/3726-atom_kernel_10.8.3.html
Над скачать это ядро, заменить его в инсталлере Mountain Lion, потом, после установки, заменить его в установленной версии. И только после этого хаикнтош в VirtualBox запустится на этом нетбуке на Атоме. Проверено — как раз именно этим счас занимаюсь :)
Думаю может статью тут написать про это :)
У меня тоже различий было много: команда fc ze6.fd.old ze6.fd > diff.txt выдает дифф файл на 17кб.
Это нормально, поскольку биос не просто перепакованный, он еще сжат архиватором, поэтому и разница при двоичном сравнении. Если вы делали все правильно, то все получится. Успехов :)
ЗЫ у меня полет нормальный.

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity