@phpclubru

Страница 101 из 956
Alexander
03.02.2017
08:15:31
нашел чел написал на stackoverflow Remember that UPDATE, DELETE, and SELECT ... FOR UPDATE will lock all rows they encounter, whether those rows match all WHERE conditions or not. однако в доках че-то не могу найти про "or not", вроде как лочить должно только те строки которые "match all WHERE"...

Dmitry
03.02.2017
09:31:16
Ну ты полные транзакции покажи

все строки оно лочит если индекса нет по полям из where

Ну или SHOW ENGINE INNODB STATUS

Google
Alexander
03.02.2017
09:37:48
вот http://pastebin.com/wVvz4Rti

я никак понять не могу, кажется что оно лочит все строки по второму индексу игнорируя AND...

Dmitry
03.02.2017
09:52:18
а хде WE ROLL BACK TRANSACTION ;)

Alexander
03.02.2017
09:56:20
косяк...вроде как там было *** WE ROLL BACK TRANSACTION (1)...

Dmitry
03.02.2017
10:01:00
толжен еще быть второй WAITING FOR THIS LOCK TO BE GRANTED

Alexander
03.02.2017
10:02:51
второй пишет мол *** (2) HOLDS THE LOCK(S): ...

Dmitry
03.02.2017
10:04:44
Ну держит, один держит, другой ждет - никаких проблем ;) Для дедлока оба должы ждать друг друга, по-этому (2) waiting еще должен быть

И там в этой транзакции еще что-то есть? Возможно, работа с другими таблицами связанными с этой внешним ключем

Alexander
03.02.2017
10:07:03
мм user_id это внешний ключ к таблице пользователей (on delete cascade on update no action). В принципе запись пользователя может быть залочена FOR UPDATE но это вроде как не должно влиять на другую таблицу (т.к. on update no action)...

и в этой транзакции вообще только update один (без явного открытия транзакции begin)

поймал ещё 1 http://pastebin.com/taSGaf85 в прошлый раз криво скопировал, действительно там есть *** (2) WAITING FOR THIS LOCK TO BE GRANTED: там insert'ы ещё идут в эту таблицу, они делают gap-lock получается? (locks gap before rec insert intention waiting)

Dmitry
03.02.2017
10:36:45
да, по-этому я и говорю, что нужны все запросы транзакции.... статус говорит о текущей ситуации, но не говорит о предшествующей.

но против гап локов можно понизить до READ COMMITTED изоляции, правда нужно подумать, не помешает ли это где-то в другом месте

Google
Alexander
03.02.2017
10:37:57
но там где update, там больше ничего нет, insert'ы они в параллельных потоках...

ещё сделал комбинированный индекс (из двух которые во where), и вроде как это помогает, но не понимаю почему...

Artyom
03.02.2017
11:37:01
Привет всем. Подскажите пожалуйста, есть ли возможность глянуть как curl формирует данные при отправке запроса?

Pavel
03.02.2017
11:38:48
Как вариант, используй ngrok какой-нибудь, или промежуточный сервер который покажет какие запросы приходят

Artyom
03.02.2017
11:40:51
ммм спасибо

dypa
03.02.2017
11:41:16
консольный курл может -vvv

а если php curl то http://php.net/manual/ru/function.curl-getinfo.php

Artyom
03.02.2017
11:54:30
Спасибо

А не подскажете ещё, как можно заставить curl отправлять post данные методом form-data а не x-www-form-urlencoded?

Сергей
03.02.2017
11:59:19
curl -d "tytData" http://example.com

я бы сказал он по умолчанию отправляет

просто данные

если постом

а если нужно сделать x-www-form-urlencoded - то нужно доп заголовок передавать

Alexander
03.02.2017
12:04:52
1.5 часа, нагрузка растет, дедлоков нет после добавления комбинированного индекса... получается на stack'е правильно написали Remember that UPDATE, DELETE, and SELECT ... FOR UPDATE will lock all rows they encounter, whether those rows match all WHERE conditions or not. Что оно лочит отдельно по индексам все строки, но в доках я этого не нашел что-то...

Сергей
03.02.2017
12:08:28
а с помощью чего вы делаете апдейт?

Alexander
03.02.2017
12:09:56
мм всмысле? php mysqli...

Сергей
03.02.2017
12:11:07
ORM используется какая-нибудь?

или mysqli_query('sql')

Alexander
03.02.2017
12:12:19
да ORM есть, но я отлажимаю по скомпилированным sql запросам, там получается чисто 1 update и никаких begin transaction

Google
Alexander
03.02.2017
12:12:37
и на нем был дедлок http://pastebin.com/taSGaf85

Сергей
03.02.2017
12:49:37
а перед апдейтами есть select?

хотя в InnoDB блокировка при update автоматом ставится

то есть пока update не сработает второй апдейт будет ломаться изза блокировки

но опять же блокировки должны быть только в транзакциях

а тут их и не видно

Alexander
03.02.2017
12:57:13
select есть, но он простой, без FOR UPDATE, BEGIN TRANSACTION и пр. Я как понял, update ставит блокировку по всеи индексам во where индивиуально, а не только на строки которые попадают под all where condition... т.е. в моем случае он выбирал отдельно bh_is_new=1 со всем таблицы и ставил на них блокировку... Иначе я не знаю как объяснить факт пропажи дедлоков после добавления комбинированного индекса

Сергей
03.02.2017
12:58:17
http://www.mysql.ru/docs/man/InnoDB_Locks_set.html

UPDATE ... SET ... WHERE ...: устанавливает эксклюзивную блокировку следующего ключа для каждой записи, по которой производится поиск.

но это только в транзакции должно быть

Alexander
03.02.2017
13:00:11
ну транзакция там автоматом создается при update. Но дело в том, что у меня поиск идет по index_1 AND index_2, а он получается ставил лок отдельно на все строки index_1, index_2 и из-за этого по index_2 получался дедлок...ну или как-то так...

короче при поиске оно AND игнорировало, как я понял..

Сергей
03.02.2017
13:02:47
а сколько в базе записей?

Alexander
03.02.2017
13:04:57
560к

Alexander
03.02.2017
13:09:14
да, но я думал что может там что-то другое имеется ввиду... потому что вроде как лочить должно было строки где user_id=N AND is_new=1 ...

Dmitry
03.02.2017
13:09:47
меня смущает mysql tables in use 2, locked 2

Alexander
03.02.2017
13:11:23
мм это значит типа 2 таблица используется при выборке?

Dmitry
03.02.2017
13:12:10
угу.. хотя это может по вневшнему ключу затрагивается...

да, но я думал что может там что-то другое имеется ввиду... потому что вроде как лочить должно было строки где user_id=N AND is_new=1 ...
А инсерты у тебя тоже без транзакции идут? Что-то у меня подозрение, что там дедлок из трех транзакций

Google
Alexander
03.02.2017
13:34:10
инсерты в транзакциях

Dmitry
03.02.2017
13:34:21
пачка в одной транзакции, да?

Alexander
03.02.2017
13:34:47
не, просто разные другие операции и инсерт в историю

Dmitry
03.02.2017
13:36:01
ясно, что не ясно... не складывается картина, но я в общем и не очень в этих гаплоках ;) столько подводных камней в этом иннодб ;)

Alexander
03.02.2017
13:36:59
вообще там есть такая штука innodb_locks_unsafe_for_binlog и многие вроде как её включают...

но я пока не разобрался стоит ли...тем более, кажется, объединение индексов помогло..

Dmitry
03.02.2017
13:39:31
да объединение поможет, факт... мне просто механизм появления этого дедлока интересно понять

в иннодб запросто можно получить дедлок когда в одной транзакции просто select :)

Admin
ERROR: S client not available

Alexander
03.02.2017
13:41:15
ну если update лочило все is_new=1 и во время инсерта получается is_new=1...видимо как-то тут gap lock накладывается...

Sarmkadan
03.02.2017
17:27:57
Ребят как правильно перенести базу с phpmyadmin (marinadb) в azure mysql server ?) я тут пытался обычный експорт, не катит.

Pavel
03.02.2017
17:32:06
nadezhdadb

А просто скачать дамп и загрузить его в azure не прокатывает?

Кенни
03.02.2017
17:39:00
Привет, ребят как перевести шаблон html в smarty?

Constantine
03.02.2017
17:39:15
зачем?

юзай php как шаблонизатор

Dmitry
03.02.2017
17:40:04
прочитай документацию про смарти, переведи шаблон html в смарти

Pavel
03.02.2017
17:40:29
Видимо для этого достаточно переименовать .html в .tpl

Кенни
03.02.2017
17:43:16
хорошо спасибо

Dmitry
03.02.2017
17:50:17
nfs для винды под ваграндом все же чуточку быстрее нативной виртаулбоксы

Google
dypa
03.02.2017
17:55:19
юзай php как шаблонизатор
с xss будешь вручную бороться?!

Vaderoff
03.02.2017
18:20:12
Почему такую ошибку выводит ? если выводить массив $record_db выводит все, а если заливать в таблицу выводит ошибку http://pastebin.com/kXWACsU5



dypa
03.02.2017
18:23:59
это php глючит ;)

вообще в ошибке есть всё, чтобы ее исправить

Vaderoff
03.02.2017
18:29:26
Можешь подсказать?

dypa
03.02.2017
18:29:52
берешь словарь и переводишь каждое слово

Vaderoff
03.02.2017
18:31:26
Я знаю что там написано

ожидала параметр 1

dypa
03.02.2017
18:41:06
и что не так с первым параметром?

Vaderoff
03.02.2017
18:42:44
хз

Подскажи пожалуйста

Dmitry
03.02.2017
19:09:53
Блин, не получается. Если делать tocuh файла внутри варанта, то шторм начинает ругаться про измененный файл... что бы такого сделать, что бы и шторм не заметил, и inotify сработало ;)

Vaderoff
03.02.2017
19:29:15
Все я решил проблему, спасибо, за небольшую помощь ?

Dmitry
03.02.2017
19:44:54
а нет ли какого канала с телеграме... типа #plyat_kak_vy_jivete_s_etim_vagrantom

Grigori
03.02.2017
19:46:15
а мы с ним не живем

Dmitry
03.02.2017
19:46:47
а тех, кто не живет - и не спрашиваем

Grigori
03.02.2017
19:48:06
и как же теперь не высказаться? это как вегетарианца спросить про вред мяса!

Dmitry
03.02.2017
19:48:55
да твой докер не лучше... тут же проблема не в вагранте, а в виртуалбоксе

Grigori
03.02.2017
19:49:32
вагрант выкинули, запилили контейнеры, перестали мучаться с виртуалками - установили десктопный линукс, написали compose, задеплоили registry, прописали сертификаты

Страница 101 из 956