
Yaroslav
18.07.2017
09:46:14

Danil
18.07.2017
09:47:02
https://www.webyog.com/product/monyog
Для мониторинга- может подойти. Автоматически на проблемму не укажет (тут уж самому смотреть)

Evgeny
18.07.2017
09:47:38

Google

Yaroslav
18.07.2017
09:48:22
попробуй процесслист посмотреть время выполнения запрос, лог проверь
если еще не делал

lost
18.07.2017
11:09:55
iotop/htop тоже посмотрите, может не хватает чего-то

Danilian
18.07.2017
13:23:46
привет, можно ли вопро по mysql задать?
Есть 2 таблицы, в одной есть колонка id, в другой sectionId. Нужно составить такой запрос, чтобы удалить из обеих таблиц такие строки, у которых в случае первой таблицы удалялась строка у которой id=X, а в случае второй удалялись строки у которых sectionId=X, где X - число, которое обозначает идентификатор
весь интернет изгуглил

Fike
18.07.2017
13:24:26
foreign key on delete cascade

Ринат
18.07.2017
13:24:48
)

Fike
18.07.2017
13:25:04
и почему от двух запросов отказались?

Danilian
18.07.2017
13:26:09

Fike
18.07.2017
13:26:48
Да что там сложного. Автоматическая штука, которая при удалении родительской записи удаляет дочерние, чего вы и пытатетесь достичь
Так а схему не ею же создавали?

Google

Ринат
18.07.2017
13:27:31
удаляете пост-он удаляеет все комментарии к ним
чтобы не делать это программно и не забыть и т.д

Danilian
18.07.2017
13:28:00

Ринат
18.07.2017
13:28:01
для этого навешивается на вшнещний ключ ограничения целостности

Danilian
18.07.2017
13:28:23

Mikhail
18.07.2017
13:28:33

Danilian
18.07.2017
13:28:53

Ринат
18.07.2017
13:29:20
http://denis.in.ua/foreign-keys-in-mysql.htm

Mikhail
18.07.2017
13:29:55

Ринат
18.07.2017
13:30:16
https://stackoverflow.com/questions/12185811/mysql-on-delete-cascade-test-example

Danilian
18.07.2017
13:47:38
Спасибо, кое-как в Idea разрулил с SQL. Добра вам, ребята.

Валерий
18.07.2017
14:30:48
приветствую! существуют ли какие методики, чтобы понять, насколько замедлится выполнение запроса в innodb, если в WHERE для одного из условий добавить OR field IN (...) ?

lost
18.07.2017
14:51:35

Валерий
18.07.2017
14:52:09
да хотя бы в соотношении для одного набора данных
например, при N строках запрос X без IN выполняется 1 сек, с IN - 3 сек

lost
18.07.2017
14:53:28
есть такая вещь как last query cost
версия mysql какая?

Валерий
18.07.2017
14:54:10
5.7

lost
18.07.2017
14:54:26
тогда можно делать еще explain format = json

Google

Валерий
18.07.2017
14:57:47
а, я тут еще раз взглянул на запрос

lost
18.07.2017
14:58:15
и внезапно обнаружил что там нет необходимого индекса? :)

Валерий
18.07.2017
14:58:28
нет, с индексами все хорошо
дело в том, что тут уже есть IN в кач-ве первого условия в WHERE по PK
число элементов в IN ограничено бизнес-логикой приложения (не более 1000)
соответственно, для всех последующих условий диапазов рез-тов достаточно мал
и еще один IN для PK (согласно бизнес логике там подмножество из первого IN) никак навредить не должен
ну, мне так видится

lost
18.07.2017
15:03:08
explain подскажет
вредит или не вредит

Валерий
18.07.2017
15:03:22
и то верно, поизучаю
спасибо

lost
18.07.2017
15:06:32
вообще логика весьма странная: делать выборку по диапазону праймари, или по подмножеству этого же диапазона

Валерий
18.07.2017
15:09:12
Логика там примерно такая. Есть набор ID пользователей, и подмножество этого набора, для которых одно из условий выборки игнорируется. Т.е., мы выбираем всех из первого множества, кто соответствует, например, полу, возрасту, и месту жительства. Но для второго множества игнорируется место жительства
Сделать выборку ранее тоже не вариант (у нас кластер)
точнее, реально, но это будет еще более трудозатратно для инфраструктуры

Fike
18.07.2017
15:14:13
ручное шардирование?

Валерий
18.07.2017
15:14:48
да
средствами приложения

Fike
18.07.2017
15:15:02
ну вы сами себе эту яму выкопали

Google

Валерий
18.07.2017
15:15:37
да мы не особо страдаем. данных много, инфраструктура огромная

Alexey
18.07.2017
15:17:03

Валерий
18.07.2017
15:17:45

lost
18.07.2017
15:18:02
в innodb быстрее поиска по pk как-бы и нет ничего)

Alexey
18.07.2017
15:19:00
там не столько в innodb, сколько в оптимизаторе проблема может быть
вот тут пишут: https://dev.mysql.com/doc/refman/5.7/en/range-optimization.html#equality-range-optimization

lost
18.07.2017
15:20:07
вряд ли топикстартер столкнется с этой проблемой
но такое бывает да, оптимизатор может посчитать, что памяти на условие IN ему не хватило и переключится на фуллскан таблицы
и это будет грустно

Otto
18.07.2017
16:37:24
Всем прив. где у меня ошибка...
SELECT transactions.base_id, SUM(`transactions`.`amount_fee`) AS short_amount FROM transactions WHERE transactions.loan_type = 1 GROUP BY transactions.base_id LEFT JOIN base ON (`base`.`id` = transactions.`base_id`)

Yevhen
18.07.2017
17:12:08
Join вверх подними

Fike
18.07.2017
17:12:13
На что ругается-то, на джойн после груп бай?

Otto
18.07.2017
18:07:36
т.е. мне надо в одну таблицу записать сумму всех значении из другой таблицы...
напр. есть SELECT id FROM clients тут у меня список клиентов, у ней есть есть 2 поля short и long
есть ещё таблица transaction таблица транзакции, где надо определить транзакции и записать их сумму в short и long`а как определить какие - куда записать, у меня в таблице транзакции есть поле WHERE `type = short или = long... ну и да связать их надо по client.id = transaction.client_id
тут наверное надо граммотно групировку составить по transactions.client_id и лимит прописать т.к. клиент один.
???

Fike
18.07.2017
21:41:07
если уж очень хочется после, оберните в CTE

Otto
19.07.2017
07:34:25

Danilian
19.07.2017
08:26:04
подскажите пожалуйста, есть один код
INSERT INTO `help-contents` (sectionId, text) VALUES (44, 'z') ON DUPLICATE KEY UPDATE sectionId=44
и почему-то работает только вставка

Google

Danilian
19.07.2017
08:26:19
обновление не работает
sectionId - Unique, int, text - TEXT

Ринат
19.07.2017
08:28:38
может надо праймери

Danilian
19.07.2017
08:29:00
https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
Вот тут сказано что достаточно просто UNIQUE
кстати все равно почему-то написано что 1 rows affected
хотя ничего не изменилось

Ринат
19.07.2017
08:30:53
а что он должен был поменять?
texT?

Danilian
19.07.2017
08:31:22
Да.
Все, разобрался. После ON DUPLICATE KEY UPDATE должно быть не условие а параметр, который нужно заменить

Alexey
19.07.2017
08:43:50
8.0, судя по всему, будет чумовым релизом: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-2.html