Помогите с запросом

  • Автор темы AlexDreamer
  • Дата начала

Falc

Новичок
Только вот небольшой напряг с тем что мускул тригеры не поддерживает.
 

fixxxer

К.О.
Партнер клуба
Да, с триггерами было бы все намного проще.
Но кому нужен форум, не поддерживающий mysql?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: fixxxer
Но кому нужен форум, не поддерживающий mysql?
Мне бы пригодился. Если перенести весь код, который из-за убогости Мыскля обычно засунут в ПХП, в хранимые процедуры, то любой форум будет работать значительно быстрее.

А уж если ещё и схему базы сделать нормальную, а не заточенную опять же под Мыскль и спортированную с него на другие базы...
 

fixxxer

К.О.
Партнер клуба
Да кто же спорит. Но самая распространенная СУБД пока что - MySQL, а нормальный хостинг с поддержкой pgSQL еще поискать надо... Вот и ограничивается поддержка PG заменой limit n,m на limit m offet n :)
 

Falc

Новичок
Автор оригинала: Sad Spirit
Мне бы пригодился. Если перенести весь код, который из-за убогости Мыскля обычно засунут в ПХП, в хранимые процедуры, то любой форум будет работать значительно быстрее.

А уж если ещё и схему базы сделать нормальную, а не заточенную опять же под Мыскль и спортированную с него на другие базы...
Не представляю что можно перенести в форуме из ПХП в хранимые процедуры.
Про скорость работы мускуля и других баз и спорить нечего.

И потом кто тебя заставляет затачивать структуру данных под мускул, не делая их нормальными (хотя одно другому не мешает).
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Falc
Не представляю что можно перенести в форуме из ПХП в хранимые процедуры.
Я ковырялся в потрошках phpBB, перенести можно
1) Проверку ссылочной целостности
2) Сбор статистики (сделать на триггерах)

Это уже изрядный шмат кода.

В коде phpBB, кстати, есть места с комментариями типа "как клёво было бы это сделать одним запросом, если бы Мыскль умел".

Про скорость работы мускуля и других баз и спорить нечего.
На эту тему спорить действительно не будем, т.к. нормальных данных из независимых источников у тебя естественно нет.

И потом кто тебя заставляет затачивать структуру данных под мускул, не делая их нормальными (хотя одно другому не мешает).
Меня --- никто. А разработчики ПэХэПэ софта обычно пишут под Мыскль, потом уже портируя на другие базы (ибо если делать наоборот, то под Мыскль уже хрен портируешь...).
 

Falc

Новичок
>>1) Проверку ссылочной целостности
используй таблицы InnoDB и мускул сделает это за тебя.

>>2) Сбор статистики (сделать на триггерах)
Тригеры всетаки это не хранимые процедуры.

>>В коде phpBB, кстати, есть места с комментариями типа "как клёво было бы это сделать одним запросом, если бы Мыскль умел".
phpBB разрабатывался под третий мускул, в четвертом некоторые вещи которые не умел третий можно сделать 1 запросом. А потом не так много вещей, которые нельзя сделать одним запросом на мускуле и которые дают увеличение производительности если сделать в один запрос в другой БД.

>>На эту тему спорить действительно не будем, т.к. нормальных данных из независимых источников у тебя естественно нет.
Может они есть у тебя? если есть можем проверить.

>>Меня --- никто. А разработчики ПэХэПэ софта обычно пишут под Мыскль, потом уже портируя на другие базы (ибо если делать наоборот, то под Мыскль уже хрен портируешь...).
Да в мускуле довольно скудный синтаксис SQL'я, и отсутствуют хранимые процедуру и тригеры, это накладывает серьезные ограничения на разработку софта, но как это отображется на структуре базы?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Falc
>>1) Проверку ссылочной целостности
используй таблицы InnoDB и мускул сделает это за тебя.
Аргумент от функциональности: а можно средствами InnoDB реализовать ограничение "если удаляется информация о пользователе, то все размещённые им сообщения считаются размещёнными анонимным пользователем"?

Аргумент от хостинга: а что, есть много хостингов, предоставляющих InnoDB, причём настроенный под нормальное быстродействие?

>>2) Сбор статистики (сделать на триггерах)
Тригеры всетаки это не хранимые процедуры.
О, Боги... Прежде чем создавать триггер, надо написать процедуру, которая будет выполняться при его срабатывании. Можно, конечно, и на Ц написать, но не хочется.

>>В коде phpBB, кстати, есть места с комментариями типа "как клёво было бы это сделать одним запросом, если бы Мыскль умел".
phpBB разрабатывался под третий мускул, в четвертом некоторые вещи которые не умел третий можно сделать 1 запросом. А потом не так много вещей, которые нельзя сделать одним запросом на мускуле и которые дают увеличение производительности если сделать в один запрос в другой БД.
ключевое слово "некоторые". то есть всё же существуют случаи, где сложный запрос даст выигрыш над несколькими простыми.

>>На эту тему спорить действительно не будем, т.к. нормальных данных из независимых источников у тебя естественно нет.
Может они есть у тебя? если есть можем проверить.
Нету. Но что характерно, базар на эту тему я и не начинал.

А пока: "Про то, что все правительства Земли контролируются Зелёными Человечками из Космоса и спорить нечего".

А по поводу скорости: скорость работы форума складывается из двух частей: скорости работы базы и скорости работы приложения на ПХП. Если мы выкидываем часть кода на ПХП, то скорость работы приложения, очевидно, ускорится. Если мы перенесём часть логики на базу, то скорость работы приложения опять же ускорится.

Да в мускуле довольно скудный синтаксис SQL'я, и отсутствуют хранимые процедуру и тригеры, это накладывает серьезные ограничения на разработку софта, но как это отображется на структуре базы?
На структуре сказывается оптимизация под Мыскль. Пример из phpBB: есть таблицы phpbb_posts и phpbb_posts_text, в первой вся информация о сообщении, во второй текст сообщения. Отношение между таблицами 1:1.

Не знаю как другие базы, а Постгрес подобную оптимизацию делает автоматически => оптимизация не нужна и скорее всего вредна.


В порядке поиздеваться: любителям ждать Мыскль 4.1, 5.0, 6.66 процитирую письмо Michael Widenius из рассылки MySQL developer:
Note that MySQL 4.0 is not that far away; The reason for a new
major release is that we are going to drop the .frm files to have a
file format that is much easier to extend.

This means that MySQL 4.0 will probably only have these major new
features:

- sub-selects
- binary portable tables.
- Grants on tables/columns
- cached inserts (A building block for replication).
Из интересного в письме ещё дата: 26 августа 1998 года.
 

Falc

Новичок
Автор оригинала: Sad Spirit
Аргумент от функциональности: а можно средствами InnoDB реализовать ограничение "если удаляется информация о пользователе, то все размещённые им сообщения считаются размещёнными анонимным пользователем"?
Согласен что такое средствами мускула не сделаешь, но на производительность системы это никак не повлияет, так как удаление пользователей это достаточно редкая вешь, да и потом на ПХП это будет просто реализовать и работать будет не сильно медленее чем через хранимую процедуру.


Аргумент от хостинга: а что, есть много хостингов, предоставляющих InnoDB, причём настроенный под нормальное быстродействие?
Да, но найти не мускульный хостинг, "причём настроенный под нормальное быстродействие", тоже не так просто.

О, Боги... Прежде чем создавать триггер, надо написать процедуру, которая будет выполняться при его срабатывании. Можно, конечно, и на Ц написать, но не хочется.
Аргумент не принимаеться, т.к разговор был именно про процедуры, а если у тебя в СУБД есть процедуры, но нет тригеров то такое не сделаешь.

ключевое слово "некоторые". то есть всё же существуют случаи, где сложный запрос даст выигрыш над несколькими простыми.
Да согласен, что есть вещи которые в мускуле решаються толпой запросов, вместо одного запроса с подзапросом. Но минусы есть у всех СУБД.

Нету. Но что характерно, базар на эту тему я и не начинал.
Ну если у нас нет собственных бенчмаков тогда можно воспользоваться чужими результатами, вот крпимеру результаты тестирования компании Mysql AB:
http://www.mysql.com/information/benchmark-results/result-mysql,pg.html

А по поводу скорости: скорость работы форума складывается из двух частей: скорости работы базы и скорости работы приложения на ПХП. Если мы выкидываем часть кода на ПХП, то скорость работы приложения, очевидно, ускорится. Если мы перенесём часть логики на базу, то скорость работы приложения опять же ускорится.
Не понятно какой код ты хочешь выкидывать из ПХП?
При переносе части логики в базу обычно скорость увеличиваеться, но опять же не всегда, некоторые вещи будут быстрее работать на ПХП.

На структуре сказывается оптимизация под Мыскль. Пример из phpBB: есть таблицы phpbb_posts и phpbb_posts_text, в первой вся информация о сообщении, во второй текст сообщения. Отношение между таблицами 1:1.

Не знаю как другие базы, а Постгрес подобную оптимизацию делает автоматически => оптимизация не нужна и скорее всего вредна.
Не совсем понял, каккого рода тыимеешь ввиду оптимизацию?
Если хранение динамических столбцов отдельно, от фиксированных, то по мойму такое делают далеко не все СУБД.

В порядке поиздеваться: любителям ждать Мыскль 4.1, 5.0, 6.66 процитирую письмо Michael Widenius из рассылки MySQL developer:

Из интересного в письме ещё дата: 26 августа 1998 года.
Да 4-ый мускул выходил долго, но он все же вышел, хоть и не все в нем реализовано, что было запланированно.
Ждать можно что угодно, но работаем с тем что есть, есть конечно не удобства. но эти неудобства есть не тулько у мускула, они есть у любого програмного продукта, будь то СУБД или что-то еще.

P.S.
Сейчас работаю с 2 СУБД MySQL и FireBird, Недостатки и не удобства есть у обоих баз, но на мой взгляд у MySQL их меньше, хотя возможно это из-за привычки к первому.
 
Сверху