Гость
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL? / 25 сообщений из 58, страница 1 из 3
22.12.2020, 20:05
    #2664528
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
...
Рейтинг: 0 / 0
22.12.2020, 20:11
    #2664537
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 20:05
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
22.12.2020, 20:13
    #2664538
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  22.12.2020, 20:11
Конякула  22.12.2020, 20:05
Собственно сабж.

А то я тут хочу на основе триггеров БД один модуль на продажу для одной CMS написать. И думаю, может на триггерах всё построить. В Оракле в свое время многое на них строилось. Но это не Оракел.
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
...
Рейтинг: 0 / 0
22.12.2020, 20:52
    #2664606
Программизд 02
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гидроцефалы всех стран соединяйтесь!
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Хранимки да.
Триггеры нет.

Хранимки тоже использую по минимуму. Например чтобы собрать все ответы на ответы на ответы для исходног опоста
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
CREATE PROCEDURE V1_DEEP_COLLECT_REPLIES(IN P_OID INTEGER)

DETERMINISTIC
SQL SECURITY INVOKER
COMMENT ''
PROC:
BEGIN
   DECLARE AFFECTED_CNT INTEGER;

   DELETE FROM TMP_CHILDREN;
   INSERT INTO TMP_CHILDREN (ID) VALUES (P_OID);

   CREATE TEMPORARY TABLE IF NOT EXISTS TMP_DEL_ITEMS2(ID INTEGER);
   CREATE TEMPORARY TABLE IF NOT EXISTS TMP_DEL_ITEMS3(ID INTEGER);

   DELETE FROM TMP_DEL_ITEMS2;
   INSERT INTO TMP_DEL_ITEMS2 (ID)
   SELECT ID FROM TMP_CHILDREN;

   DELETE FROM TMP_DEL_ITEMS3;
   INSERT INTO TMP_DEL_ITEMS3 (ID)
   SELECT ID FROM TMP_CHILDREN;

   SET @AFFECTED_CNT = 0;

   REPEAT

     INSERT INTO TMP_CHILDREN (ID)
     SELECT REPLY_POST_ID FROM V1_POST_HIERARCHY
     WHERE PARENT_POST_ID IN (SELECT ID FROM TMP_DEL_ITEMS2)
     AND REPLY_POST_ID NOT IN (SELECT ID FROM TMP_DEL_ITEMS3);

     SET @AFFECTED_CNT = ROW_COUNT();

     DELETE FROM TMP_DEL_ITEMS2;
     INSERT INTO TMP_DEL_ITEMS2 (ID)
     SELECT ID FROM TMP_CHILDREN;

     DELETE FROM TMP_DEL_ITEMS3;
     INSERT INTO TMP_DEL_ITEMS3 (ID)
     SELECT ID FROM TMP_CHILDREN;

   UNTIL @AFFECTED_CNT = 0
   END REPEAT;

END;
...
Рейтинг: 0 / 0
22.12.2020, 21:00
    #2664619
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 20:13
defecator  22.12.2020, 20:11
Конякула  22.12.2020, 20:05
...
бизнес-логика на основе триггеров ?
да тебя сжечь сразу нахуй, медленно на свечках
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Изменено: 22.12.2020, 21:01 - defecator
Рейтинг: 0 / 0
22.12.2020, 21:55
    #2664687
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
defecator  22.12.2020, 20:11
...
Не. Там не бизнеслогика. В том-то и дело. Там модуль ускорения CMS.
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются. Но, если в этой базе много данных, то она так тормозит, что хочется плакать. Чтобы она перестала тормозить надо её немного денормализовать. А может и много. Просто взять и переделать таблички и сделать их шустрее в готовой CMS как ты наверное понимаешь не получится. Она опирается именно на эту структуру БД и по другому работать не умеет. Потому у меня возникла идея рядом с имеющейся структурой сделать свою, денормализованную и чтобы не ковыряться в бизнеслогике и не катомизировать весь стандартный код CMS проще повесить на стандартные таблички триггера, которые будут добалять, обновлять и удалять данные из моих кастомных табличек. А сверх моих кстомных табличек сделать одну единственную кастомную функцию и использовать её совместно со стандартными функциями выбора при выборе данных.

Может я ошибаюсь, но по-моему труггеры тут в самый раз.
...
Рейтинг: 0 / 0
22.12.2020, 22:23
    #2664721
Программизд 02
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гидроцефалы всех стран соединяйтесь!
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать. С ними блокировки намного больше и дольше как правило, чем без них.

На одном крупном проекте на MySQL у нашего американского партнера пришлось даже уйти от внешних ключей - также по соображением блокировок.

Когда я тоже ушел от внешних ключей на форуме, количество дедлоков скоратилось до единичных редких случаев.
...
Рейтинг: 0 / 0
22.12.2020, 22:29
    #2664729
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 21:55
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
...
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются.
охуенные люди, просто молодцы ! аплодирую стоя - сделали, как надо !
Конякула  22.12.2020, 21:55
Но, если в этой базе много данных, то она так тормозит, что хочется плакать.
скорее всего, кто-то забыл про индексы и злоупотреблял left join
Конякула  22.12.2020, 21:55
Чтобы она перестала тормозить надо её немного денормализовать.
а вот теперь выпей йаду
денормализация допускается только в логировании данных, а ты просто лошара, которая ничего в БД не смыслит
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
22.12.2020, 23:10
    #2664808
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Программизд 02  22.12.2020, 22:23
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать. С ними блокировки намного больше и дольше как правило, чем без них.

На одном крупном проекте на MySQL у нашего американского партнера пришлось даже уйти от внешних ключей - также по соображением блокировок.

Когда я тоже ушел от внешних ключей на форуме, количество дедлоков скоратилось до единичных редких случаев.
Я выше описал как хочу использовать триггеры. Как думаешь, стоит? Или всё же запариться и на уровне php всё это реализовать?
...
Рейтинг: 0 / 0
22.12.2020, 23:14
    #2664816
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  22.12.2020, 22:29
скорее всего, кто-то забыл про индексы и злоупотреблял left join
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
defecator  22.12.2020, 22:29
а вот теперь выпей йаду
денормализация допускается только в логировании данных, а ты просто лошара, которая ничего в БД не смыслит
Доведение до высших форм нормальзации вообще не допускается. Как раз по тому, что они очень ресурсовёмки при выборках данных. Так что пойди хлебни говна.
...
Рейтинг: 0 / 0
22.12.2020, 23:22
    #2664829
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 23:14
defecator  22.12.2020, 22:29
скорее всего, кто-то забыл про индексы и злоупотреблял left join
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
22.12.2020, 23:28
    #2664839
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  22.12.2020, 23:22
Конякула  22.12.2020, 23:14
defecator  22.12.2020, 22:29
...
С индексами там всё хорошо. А вот с джойнами как раз плохо. Потому что там ну условно в CMS есть внутренний тип данных с 10-тью полями. Чтобы его весь выбрать это надо взять и сджойнить 2 таблички сами на себя 10 раз. А теперь представь себе страницу сайта на которой 5 слайдеров по 10 слайдов в каждом в которых вот этот самый тип данных выбирается. 50 объектов, в каждом надо 2 таблики 10 раз на себя сджойнить. Страница откликается через 2 секунды. Это много.
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
...
Рейтинг: 0 / 0
22.12.2020, 23:43
    #2664861
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 23:28
defecator  22.12.2020, 23:22
Конякула  22.12.2020, 23:14
...
если такая хуйня - джойнить саму на себя десятки раз - происходит, то там нет никакой нормализации, говно из говна
подобное присутствует во всякой аналитике, но обычно решается средствами самой СУБД, достаточно, чтобы программер это всё знал

И таки да, аналитика в любой базе совсем не быстрая
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
аналитика лежит в другом уровне
ты этого не понимаешь
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
23.12.2020, 00:07
    #2664903
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  22.12.2020, 23:43
Конякула  22.12.2020, 23:28
defecator  22.12.2020, 23:22
...
Ну вот видишь. Потому и надо немного денормализовать. Чтобы вместо десяти джойнов был запрос из одной таблички, который нужные ID-шники возвращает, а потом уже в основной запрос с двумя табличками и единственным джойном этот массив загнать. Будет в 100 раз быстрее.
аналитика лежит в другом уровне
ты этого не понимаешь
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
...
Рейтинг: 0 / 0
23.12.2020, 00:48
    #2664956
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  23.12.2020, 00:07
defecator  22.12.2020, 23:43
Конякула  22.12.2020, 23:28
...
аналитика лежит в другом уровне
ты этого не понимаешь
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
получается, что говно в базе и архитектуре
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
23.12.2020, 01:31
    #2664990
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  23.12.2020, 00:48
Конякула  23.12.2020, 00:07
defecator  22.12.2020, 23:43
...
У меня это не аналитика. Это просто ускорение основных запросов на сайте.
получается, что говно в базе и архитектуре
Тут я спорить не готов. Сама система удобная в использовании, красивая, удобная в разработке. Но в плане БД... уж какая есть. Я могу только прикрутить что-то сверху, чтобы ускорить сайты, которые я разрабатываю.
...
Рейтинг: 0 / 0
23.12.2020, 06:55
    #2665069
WildMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Конякула  22.12.2020, 21:55
defecator  22.12.2020, 21:00
Конякула  22.12.2020, 20:13
...
никаких триггеров
вся логика должна быть в хранимках

просто заруби это себе на носу навсегда
Дефыч, ты вроде спец по говну, а не по базам? Или ты спец по говнобазам тоже? Ну так вот тебе к расмышлению немного информации:
Есть некая CMS, хорошая, удобная. Но, сцуко, разработчики лет 20 назад когда начинали её делать начитались теории про нормализацию БД и так её нормализировали, что данные там реально не дублируются. Но, если в этой базе много данных, то она так тормозит, что хочется плакать. Чтобы она перестала тормозить надо её немного денормализовать. А может и много. Просто взять и переделать таблички и сделать их шустрее в готовой CMS как ты наверное понимаешь не получится. Она опирается именно на эту структуру БД и по другому работать не умеет. Потому у меня возникла идея рядом с имеющейся структурой сделать свою, денормализованную и чтобы не ковыряться в бизнеслогике и не катомизировать весь стандартный код CMS проще повесить на стандартные таблички триггера, которые будут добалять, обновлять и удалять данные из моих кастомных табличек. А сверх моих кстомных табличек сделать одну единственную кастомную функцию и использовать её совместно со стандартными функциями выбора при выборе данных.

Может я ошибаюсь, но по-моему труггеры тут в самый раз.
Плохая идея с триггера ми
...
Рейтинг: 0 / 0
23.12.2020, 07:47
    #2665084
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
триггеры надо использовать очень аккуратно.

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
...
Рейтинг: 0 / 0
23.12.2020, 09:14
    #2665161
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
eNose  23.12.2020, 07:47
триггеры надо использовать очень аккуратно.

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
Так для этого констрейнты есть
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
23.12.2020, 10:10
    #2665209
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  23.12.2020, 09:14
eNose  23.12.2020, 07:47
триггеры надо использовать очень аккуратно.

например в справочниках что бы гарантированно не ёбнули какие-то нужные записи.
Так для этого констрейнты есть
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
...
Рейтинг: 0 / 0
23.12.2020, 10:11
    #2665212
defecator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нихрена не умеешь ? Забей !
Будь как Пошэ - склипиздень двужопостворчатый !
Деда, а ты пользуешь хранимки и триггеры в MySQL?
eNose  23.12.2020, 10:10
defecator  23.12.2020, 09:14
eNose  23.12.2020, 07:47
...
Так для этого констрейнты есть
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
Правами это не разруливается?
...
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали

на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки
Рейтинг: 0 / 0
23.12.2020, 10:16
    #2665220
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
defecator  23.12.2020, 10:11
eNose  23.12.2020, 10:10
defecator  23.12.2020, 09:14
...
при чем тут это?

я про (например) пол "пидарас", который должен быть в справочнике, но пока что пидорасов в сотрудниках типа нет.
так вот пол удалять надо запретить.
Правами это не разруливается?
конкретно это - нет.
должен же быть "оператор справочника", у которого должны быть права модификации справочника.
и тут как раз поможет триггер.

вообще легкие триггеры в общем то полезны, проблема как всегда в том, что говнокодеры пытаются заибашить триггер с вычислениями на 100500 строк.
...
Рейтинг: 0 / 0
23.12.2020, 10:17
    #2665222
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
ну и автоинкремент в оракле удобно ж триггерами делать
...
Рейтинг: 0 / 0
23.12.2020, 10:19
    #2665224
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Программизд 02  22.12.2020, 22:23
Триггеры как бы удобны они ни были, обычно в серьезных проектах не используют и я слышал много рекомендаций - ни в коем случае их не использовать.
чушь, ровно как и с GOTO

просто надо сначала отпиздить говнокодера, а потом пусть пишет код
...
Рейтинг: 0 / 0
24.12.2020, 00:52
    #2667828
Конякула
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Шут - адвокат разума
Деда, а ты пользуешь хранимки и триггеры в MySQL?
Вот запрос который генерируется CMS на одном из блоков страницы:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
SELECT DISTINCT SQL_CALC_FOUND_ROWS
    h.id AS id, h.rel AS pid
FROM
    cms3_hierarchy h,
    cms3_permissions p,
    cms3_objects o
        LEFT JOIN
    cms3_object_content oc_509_lj ON oc_509_lj.obj_id = o.id
        AND oc_509_lj.field_id = '509'
        LEFT JOIN
    cms3_object_content oc_516_lj ON oc_516_lj.obj_id = o.id
        AND oc_516_lj.field_id = '516'
        LEFT JOIN
    cms3_object_content oc_517_lj ON oc_517_lj.obj_id = o.id
        AND oc_517_lj.field_id = '517'
WHERE
    h.type_id IN (56)
        AND ((oc_509_lj.int_val = '1'
        OR oc_516_lj.int_val = '1'
        OR oc_517_lj.int_val = '1'))
        AND h.lang_id = '1'
        AND h.is_deleted = '0'
        AND h.is_active = '1'
        AND (p.rel_id = h.id AND p.level & 1
        AND p.owner_id IN (579))
        AND h.id IN (33 , 28, 24, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 104,  22,  121,  61,  37, 34, 58, 35, 41, 56)
        AND h.obj_id = o.id
ORDER BY h.ord ASC
LIMIT 0 , 10
Как видите тут 3 лефтджойна. Их может быть больше. Они подключают много раз одну и ту же таблицу. В таблице этой может быть много данных и запрос из-за этого тормозит.

Вот структура таблицы cms3_hierarchy:
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE TABLE `cms3_hierarchy` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `rel` int(10) unsigned NOT NULL,
  `type_id` int(10) unsigned NOT NULL,
  `lang_id` int(10) unsigned NOT NULL,
  `domain_id` int(10) unsigned NOT NULL,
  `obj_id` int(10) unsigned NOT NULL,
  `ord` int(11) DEFAULT '0',
  `tpl_id` int(10) unsigned DEFAULT NULL,
  `alt_name` varchar(128) DEFAULT NULL,
  `is_active` tinyint(1) DEFAULT NULL,
  `is_deleted` tinyint(1) DEFAULT NULL,
  `is_visible` tinyint(1) DEFAULT NULL,
  `updatetime` int(11) DEFAULT NULL,
  `is_default` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `types rels_FK` (`type_id`),
  KEY `Prefix from lang_id_FK` (`lang_id`),
  KEY `Domain from domain_id relation_FK` (`domain_id`),
  KEY `hierarchy to plain object image_FK` (`obj_id`),
  KEY `Getting template data_FK` (`tpl_id`),
  KEY `is_default` (`is_default`),
  KEY `alt_name` (`alt_name`),
  KEY `is_deleted` (`is_deleted`),
  KEY `is_active` (`is_active`),
  KEY `ord` (`ord`),
  KEY `rel` (`rel`),
  KEY `updatetime` (`updatetime`),
  KEY `is_visible` (`is_visible`),
  CONSTRAINT `FK_Domain from domain_id relation` FOREIGN KEY (`domain_id`) REFERENCES `cms3_domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Getting template data` FOREIGN KEY (`tpl_id`) REFERENCES `cms3_templates` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Prefix from lang_id` FOREIGN KEY (`lang_id`) REFERENCES `cms3_langs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_hierarchy to plain object image` FOREIGN KEY (`obj_id`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_types rels` FOREIGN KEY (`type_id`) REFERENCES `cms3_hierarchy_types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=186 DEFAULT CHARSET=utf8;
cms3_objects
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE `cms3_objects` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `guid` varchar(64) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `is_locked` tinyint(1) DEFAULT NULL,
  `type_id` int(10) unsigned DEFAULT NULL,
  `owner_id` int(10) unsigned DEFAULT NULL,
  `ord` int(10) unsigned DEFAULT '0',
  `updatetime` int(11) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `Object to type relation_FK` (`type_id`),
  KEY `name` (`name`),
  KEY `owner_id` (`owner_id`),
  KEY `is_locked` (`is_locked`),
  KEY `ord` (`ord`),
  KEY `guid` (`guid`),
  KEY `updatetime` (`updatetime`),
  CONSTRAINT `FK_Object to type relation` FOREIGN KEY (`type_id`) REFERENCES `cms3_object_types` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=805 DEFAULT CHARSET=utf8;
cms3_object_content
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE TABLE `cms3_object_content` (
  `obj_id` int(10) unsigned DEFAULT NULL,
  `field_id` int(10) unsigned DEFAULT NULL,
  `int_val` bigint(20) DEFAULT NULL,
  `varchar_val` varchar(255) DEFAULT NULL,
  `text_val` mediumtext,
  `rel_val` int(10) unsigned DEFAULT NULL,
  `tree_val` int(10) unsigned DEFAULT NULL,
  `float_val` double DEFAULT NULL,
  KEY `Content to object relation_FK` (`obj_id`),
  KEY `Contents field id relation_FK` (`field_id`),
  KEY `Relation value reference_FK` (`rel_val`),
  KEY `content2tree_FK` (`tree_val`),
  KEY `int_val` (`int_val`),
  KEY `varchar_val` (`varchar_val`),
  KEY `float_val` (`float_val`),
  KEY `text_val` (`text_val`(8)),
  KEY `K_Complex_FieldIdAndRelVal` (`field_id`,`rel_val`),
  KEY `K_Complex_FieldIdAndTreeVal` (`field_id`,`tree_val`),
  KEY `K_Complex_ObjIdAndFieldId` (`obj_id`,`field_id`),
  CONSTRAINT `FK_Content to object relation` FOREIGN KEY (`obj_id`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Contents field id relation` FOREIGN KEY (`field_id`) REFERENCES `cms3_object_fields` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_Relation value reference` FOREIGN KEY (`rel_val`) REFERENCES `cms3_objects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `FK_content2tree` FOREIGN KEY (`tree_val`) REFERENCES `cms3_hierarchy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Как тут можно переписать запрос, чтобы он не тормозил?

У меня идея создать таблицу с контентом в которой все поля конкретного внутреннего типа в одной записи и упростить запрос до.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT DISTINCT SQL_CALC_FOUND_ROWS
    h.id AS id, h.rel AS pid
FROM
    cms3_hierarchy h,
    cms3_permissions p,
    (SELECT
        id
    FROM
        kss_type_56 kt56in
    WHERE
        kt56in.fld_509 = '1'
            AND kt56in.fld_516 = '1'
            AND kt56in.fld_517 = '1') kt56
WHERE
    h.type_id IN (56) AND h.lang_id = '1'
        AND h.is_deleted = '0'
        AND h.is_active = '1'
        AND (p.rel_id = h.id AND p.level & 1
        AND p.owner_id IN (579))
        AND h.id = kt56.id
ORDER BY h.ord ASC
LIMIT 0 , 10
Подозреваю, что это будет выполняться значительно быстрее. Вот как раз актуальность таблички kss_type_56 думаю поддерживать триггерами.
...
Рейтинг: 0 / 0
Форумы / Вопросы по IT / Деда, а ты пользуешь хранимки и триггеры в MySQL? / 25 сообщений из 58, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]