Size: a a a

2020 December 16

R

Ruslan in MySQL
А есть пример конфигов мастера? percona 8
источник

R

Ruslan in MySQL
может у меня что-нить лишнее
источник

IZ

Ilia Zviagin in MySQL
Ринат А
Еще раз с тем же вопросом.
Возможно ли как-то оптимизировать данный запрос или он в целом нормальный?
Всего около 1.5млн строк.
Частота обращений, думаю не более 100 раз в сутки.
Оптимизировать данный запрос можно путём создания подходящих для JOIN -ов индексов. И
на таблицу t5 по дате, если за (видимо) один год не очень много записей , не более 1% от размера таблицы.
источник

РА

Ринат А in MySQL
Denis Efremov
SELECT * FROM entities_to_film t2 WHERE film_id IN (SELECT film_id FROM entities_to_film t1 WHERE (t1.entity_id = 10 and t1.entity = 7836)) AND (t2.entity_id = 8 and t2.entity = 30158)
Благодарю, сейчас чекну
источник

РА

Ринат А in MySQL
Ilia Zviagin
Оптимизировать данный запрос можно путём создания подходящих для JOIN -ов индексов. И
на таблицу t5 по дате, если за (видимо) один год не очень много записей , не более 1% от размера таблицы.
Не много записей
источник

IK

Ilshat Karazbaev in MySQL
Ruslan
А есть пример конфигов мастера? percona 8
вот это для 5.7, но там мало что поменялось к 8 https://www.speedemy.com/mysql/17-key-mysql-config-file-settings/
источник

IZ

Ilia Zviagin in MySQL
Ринат А
SELECT t1.film_id
FROM entities_to_film as t1
JOIN entities_to_film as t2
JOIN entities_to_film as t3
JOIN entities_to_film as t4
JOIN films as t5
ON t1.film_id = t2.film_id and t2.film_id = t3.film_id and t3.film_id = t4.film_id and t4.film_id = t5.id
WHERE (t1.entity_id = 10 and t1.entity = 7836) and (t2.entity_id = 8 and t2.entity = 23330)  and (t3.entity_id = 3 and t3.entity = 1)  and (t4.entity_id = 4 and t4.entity = 3) and t5.date = 2003;
SELECT t1.film_id
FROM entities_to_film as t1
JOIN entities_to_film as t2 ON t1.film_id = t2.film_id and (t2.entity_id = 8 and t2.entity = 23330)
JOIN entities_to_film as t3 on t2.film_id = t3.film_id and (t3.entity_id = 3 and t3.entity = 1)
JOIN entities_to_film as t4 on t3.film_id = t4.film_id and (t4.entity_id = 4 and t4.entity = 3)
JOIN films as t5 on t4.film_id = t5.id
WHERE (t1.entity_id = 10 and t1.entity = 7836) and t5.date = 2003;


На каждую таблицу нужен индекс (entity_id, entity, film_id)
и ещё на date
источник

R

Ruslan in MySQL
спасибо
источник

R

Ruslan in MySQL
еще вопрос, после выполнения бэкапа на мастере, нужно мастер ставить в LOCK mode?
источник

R

Ruslan in MySQL
slave всегда получает эту ошибку
Could not execute Update_rows event on table rendez_vous.user_bin; Can't find record in 'user_bin', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.013851, end_log_pos 2774
источник

IZ

Ilia Zviagin in MySQL
Ruslan
slave всегда получает эту ошибку
Could not execute Update_rows event on table rendez_vous.user_bin; Can't find record in 'user_bin', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.013851, end_log_pos 2774
Ну это опять ровно то же самое...
источник

R

Ruslan in MySQL
ага, сделал бэкап рестор, почему идет разница
источник

R

Ruslan in MySQL
вся операция заняла 15минут
источник

IZ

Ilia Zviagin in MySQL
Ruslan
ага, сделал бэкап рестор, почему идет разница
Ты что-то не так делаешь, бинлог может не чистишь...

Я в этом не разбираюсь, не могу подсказать.
источник

РА

Ринат А in MySQL
Ilia Zviagin
SELECT t1.film_id
FROM entities_to_film as t1
JOIN entities_to_film as t2 ON t1.film_id = t2.film_id and (t2.entity_id = 8 and t2.entity = 23330)
JOIN entities_to_film as t3 on t2.film_id = t3.film_id and (t3.entity_id = 3 and t3.entity = 1)
JOIN entities_to_film as t4 on t3.film_id = t4.film_id and (t4.entity_id = 4 and t4.entity = 3)
JOIN films as t5 on t4.film_id = t5.id
WHERE (t1.entity_id = 10 and t1.entity = 7836) and t5.date = 2003;


На каждую таблицу нужен индекс (entity_id, entity, film_id)
и ещё на date
Благодарю. Так понимаю, несколько select, то же самое, что и несколько join?
источник

РА

Ринат А in MySQL
Я про вариант Denis`a
источник

IZ

Ilia Zviagin in MySQL
Ринат А
Благодарю. Так понимаю, несколько select, то же самое, что и несколько join?
Где?
источник

РА

Ринат А in MySQL
Вот
источник

РА

Ринат А in MySQL
ну тут не полный запрос, но суть та же
источник

IZ

Ilia Zviagin in MySQL
Denis Efremov
SELECT * FROM entities_to_film t2 WHERE film_id IN (SELECT film_id FROM entities_to_film t1 WHERE (t1.entity_id = 10 and t1.entity = 7836)) AND (t2.entity_id = 8 and t2.entity = 30158)
@veleg я не понял нифига про этот запрос.
источник