Re: [freebsd] Re[2]: [freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Alex Korchmar
On Tue, Feb 07, 2012 at 02:50:53PM +0400, Sergey Rudenko wrote:

> Я вас правильно понял,
повторяю: вы ничего не поняли.

> просто селект в данном случае тот-же джоин.
именно.  _ваш_ селект - тот же джойн, только, вероятно, еще и хуже 
автооптимизирующийся. Ну так не делайте таких селектов.

> select thread_name,
> (SELECT forum_name FROM forum WHERE forum_id = thread_forum_id)
> from forum_t
напишите вместо этого одиночный селект. from forum,forum_t, вместе с id.
Дальше два варианта - либо вы фронтендом вручную сортируете результат, если
его немного, это неудобно программировать зато фронтендов может быть много,
либо меняете структуру базы данных - складываете свой 'forum_name' в forum_t,
и забываете всю глубокомысленную ерунду которой вас учили в институте.
Целостность данных придется поддерживать либо триггером, либо опять же 
фронтендом, ничего особенно ужасного в этом, обычно, нет.


> Alex



[freebsd] Re[2]: [freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Sergey Rudenko
Я вас правильно понял, просто селект в данном случае тот-же джоин. Не думаю, 
что в ФБ они заменили джоины на селекты и этим добились большей 
производительности
Специально протестировал на mysql таблица 4 записей, большей под рукой 
сейчас нет
Первое значение это первый запрос, второе после того как он закешировался

select thread_name,
(SELECT forum_name FROM forum WHERE forum_id = thread_forum_id)
from forum_t

SQL запросов: 1, время mysql: 0.538739, всего затрачено: 0.615614 секунд 
!Процент времени на MySQL: 87.51%
SQL запросов: 1, время mysql: 0.013977, всего затрачено: 0.089507 секунд 
!Процент времени на MySQL: 15.62%


SELECT forum_t.thread_name, forum.forum_name
FROM forum_t
LEFT JOIN forum
 ON(forum_id = thread_forum_id)

SQL запросов: 1, время mysql: 0.301786, всего затрачено: 0.368958 секунд 
!Процент времени на MySQL: 81.79%
SQL запросов: 1, время mysql: 0.013766, всего затрачено: 0.082863 секунд 
!Процент времени на MySQL: 16.61%


07 февраля 2012, 12:37 от Alex Korchmar <4spa...@linux.e-moe.ru>:
> On Tue, Feb 07, 2012 at 12:26:39PM +0400, Sergey Rudenko wrote:
> 
> > Отвечу цитатой
> А из чего цитата? А то оно как-то резко расходится со здравым смыслом и
> реальностью данной в ощущениях.
> 
> Если, как подсказывает гугель,
> http://skahin.blogspot.com/2009/10/left-join-select.html
> - то там логотип ms sql как бе намекает...
> 
> ну и я говорил не о синтаксической, а о логической замене join'ов. Вы, похоже,
> так и не поняли.
> 
> > Alex
> 
> 

[freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Sayetsky Anton
6 февраля 2012 г. 22:49 пользователь Алексей Бобок
 написал:
> Вся логика - в приложении. Задача БД - хранить данные и быстро выбирать.

Расскажите это разрабочтикам на "труъ ынтырпрайз оракуле", которые
бОльшую часть логики пишут в БД, и оно там как-то работает.


Re: [freebsd] Re: [freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Alex Korchmar
On Tue, Feb 07, 2012 at 10:35:40AM +0200, Denis Zhdanov wrote:

> А мужики в FB не знают... :)
> Тогда вопрос - чего ж тогда такой бум NoSQL сейчас?
ну типа, кризис, становятся модными системы из говн...зачеркнуто, облачные
структуры...

> В них тоже джойнов нет, и особой серверной логики тоже - максимум
> примитивы, типа SORT
зато сервера получаются дешевые и много.

> Alex



Re: [freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Alex Korchmar
On Tue, Feb 07, 2012 at 12:26:39PM +0400, Sergey Rudenko wrote:

> Отвечу цитатой
А из чего цитата? А то оно как-то резко расходится со здравым смыслом и 
реальностью данной в ощущениях.

Если, как подсказывает гугель,
http://skahin.blogspot.com/2009/10/left-join-select.html
- то там логотип ms sql как бе намекает...

ну и я говорил не о синтаксической, а о логической замене join'ов. Вы, похоже,
так и не поняли.

> Alex



[freebsd] Re: [freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Denis Zhdanov
7 февраля 2012 г. 10:26 пользователь Sergey Rudenko
 написал:
> Отвечу цитатой
> 
> Вывод: В условиях многоядерных серверов LEFT JOIN имеет неоспоримые 
> преимущества
> 
А мужики в FB не знают... :)
Тогда вопрос - чего ж тогда такой бум NoSQL сейчас?
В них тоже джойнов нет, и особой серверной логики тоже - максимум
примитивы, типа SORT


[freebsd] Re[2]: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-07 Пенетрантность Sergey Rudenko
Отвечу цитатой

При выборке в секции SELECT требуется дополнительное время на слияние 
основной выборки и подзапроса. Вышло 1% от общего времени.(+ LEFT JOIN / - 
SELECT)
Оказалось, что каждый LEFT JOIN выполняется отдельным потоком! В то время 
как подзапросы выполняются последовательно после основной выборки. (+ LEFT JOIN 
/ - SELECT)
Каждый LEFT JOIN объединяется в результирующую выборку, что требует 
дополнительной памяти. В то время как подзапрос вернет нам одно значение на 
каждую строку, т.е. для получения результата нам нужно меньше памяти. (- LEFT 
JOIN / + SELECT)

Вывод: В условиях многоядерных серверов LEFT JOIN имеет неоспоримые 
преимущества 



07 февраля 2012, 01:07 от Alex Korchmar <4spa...@linux.e-moe.ru>:
> On Tue, Feb 07, 2012 at 12:38:51AM +0400, Sergey Rudenko wrote:
> 
> > Я возможно далёк, но хотел-бы услышать как можно избавиться от join,
> > хотя-бы каким методом
> сделать select без join и тупо отфильтровать нужное?
> Идея что фронтендов вы можете понапихать до бесконечности, если они не
> справляются с сортировкой, а добавить еще одно процессорное ядро в сервер с
> БД может оказаться уже физически неодолимой задачей.
> 
> Ну или делать такую структуру тазы банных, чтобы ей не были нужны join'ы
> или были нужны крайне редко (в том числе - отказываясь от нормализации и
> дублируя часть данных, диски и линки нынче дешевы, cpu не совсем).
> 
> Редкие операции выносятся на отдельный сервер и во время тихое.
> 
> > Alex
> 
> 

Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-06 Пенетрантность Alex Korchmar
On Tue, Feb 07, 2012 at 12:38:51AM +0400, Sergey Rudenko wrote:

> Я возможно далёк, но хотел-бы услышать как можно избавиться от join, 
> хотя-бы каким методом
сделать select без join и тупо отфильтровать нужное?
Идея что фронтендов вы можете понапихать до бесконечности, если они не 
справляются с сортировкой, а добавить еще одно процессорное ядро в сервер с 
БД может оказаться уже физически неодолимой задачей.

Ну или делать такую структуру тазы банных, чтобы ей не были нужны join'ы 
или были нужны крайне редко (в том числе - отказываясь от нормализации и 
дублируя часть данных, диски и линки нынче дешевы, cpu не совсем). 

Редкие операции выносятся на отдельный сервер и во время тихое.


> Alex



[freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-06 Пенетрантность Алексей Бобок
6 февраля 2012 г. 22:38 пользователь Sergey Rudenko
написал:

> Я возможно далёк, но хотел-бы услышать как можно избавиться от join,
> хотя-бы каким методом
>
> Легко, имея соответствующую архитектуру приложения.
Необходимо выбирать нужные данные, обработать в приложении и выдать
конечный результат.
Вся логика - в приложении. Задача БД - хранить данные и быстро выбирать.
-- 
 Think before you print.
Best regards, Alexey Bobok.


[freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Re: [freebsd] Необычный дамп базы mysql

2012-02-06 Пенетрантность Sergey Rudenko
Я возможно далёк, но хотел-бы услышать как можно избавиться от join, хотя-бы 
каким методом


07 февраля 2012, 00:24 от Алексей Бобок :
  
  
Мммм. Переформулируем так - ФБ использует более 2500 серверов с MySQL, которые 
являются основным хранилищем данных ФБ, несмотря на то что они
не используют join и используют ее только как справочник - это именно
то "основное", на чем оно и крутится.
Использовать join и rlike и вообще производить сложные вычисления посредством 
БД - это плохо. Это прошлый век и это на нагрузке приведет к тому, что БД 
остановится на процессоре.

В частности, потому, что очень во многих случаях лавочку можно смело
закрывать, если она встанет на то время, которое занимает восстановление
с такого бэкапа
О_о 

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

А вообще, так как этот оффтоп на 50 писем спровоцировал походу я, потому я же и 
предлагаю закончить. Все равно все при своем мнении остануться)
 
А к топикстартеру просьба рассказать, чем закончилось для будущих поколений.

PS Пользуясь случаем, предаю поздравления Бобу Марли)  -- 
 Think before you print.
Best regards, Alexey Bobok.