Настройка my.cnf для huge сервера

liss

Новичок
Хорошо поговорили, может ближе к телу?
Что плохого в запросе
SELECT * FROM table WHERE field LIKE '%search%' ORDER BY `added` DESC
?
Основные запросы у меня типа:
SELECT * FROM table ORDER BY `added` DESC LIMIT 100
и
SELECT * FROM table WHERE field LIKE '%search%' ORDER BY `added` DESC

Так как настроить параметры конфига? Что-то я ничего толкового не услышал ещё.
 

MadMike

Новичок
Кстати, судя по всем признакам, вот это и есть full scan в оперативе :)
Я же говорил, что ниасилит :)
этот запрос сейчас выполняется примерно пол секунды на таблице в 300,000 записей при активных 100 threads.
-~{}~ 16.05.06 02:12:

SELECT * FROM table ORDER BY `added` DESC LIMIT 100
Напиши-ка на explain.
SELECT * FROM table WHERE field LIKE '%search%' ORDER BY `added` DESC
Я тебе точно говорю - ниасилит. Потому что нет индексов хотя бы.

-~{}~ 16.05.06 02:14:

Так как настроить параметры конфига? Что-то я ничего толкового не услышал ещё.
А я не услышал НИ ОДНОЙ идеи на тему того, что вообще делает у тебя mysql.
 

liss

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

-~{}~ 16.05.06 01:15:

Что нужно сказать, чтобы Вы помогли, вроде всё уже выложил
 

MadMike

Новичок
!!!!!!!!!
Я у тебя уже 2 раза спросил, что ты делаешь с мускулом!!!!
Если ты выполняешь только эти два запроса - тебе поможет только реинкарнация. Если нет - пиши, что именно ты делаешь.

-~{}~ 16.05.06 02:17:

Я сегодня очень добрый, тебе повезло, спрашивай.
 

liss

Новичок
Что я делаю? Только такие запросы, больше ничего. Только селекты в таком ключе

-~{}~ 16.05.06 01:20:

Мой конфиг кривой или нет? может стоить подрихтовать что?

-~{}~ 16.05.06 01:22:

Я просто не знаю... У меня уже народ начинает валить пачками, скоро догонится до нужных 5,000,000 daily и сервер точно вспотеет
 

AnToXa

prodigy-одаренный ребенок
Что плохого в запросе
SELECT * FROM table WHERE field LIKE '%search%' ORDER BY `added` DESC
full scan, т.е. полный просмотр всей таблицы при каждом запросе.

Так как настроить параметры конфига? Что-то я ничего толкового не услышал ещё.
ссылки на документацию уже постили, если вы и далее будете ждать что вам за вас решат проблему, то вы ошибаетесь.

вот для начала:
sort, read буфферы побольше.
max_allowed_packed зачем такой большой?

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

MadMike

Новичок
они пришли забрать мой моск.
SELECT * FROM table ORDER BY `added` DESC LIMIT 100
Индекс, надеюсь, построил?
SELECT * FROM table WHERE field LIKE '%search%' ORDER BY `added` DESC
Еще раз говорю - без шансов.
Делай так: выделяй киворды в отдельный table вида 'id' -> 'keyword'. На остальное просто забивай. Я уверен, что это не повредит. Потом делай table вида 'record_id' -> 'keyword_id'. Unique на keyword, индекс на keyword_id.
Или fulltext index на field.

А на самом деле все это лажа и ты неправильно делаешь. Можешь мне поверить.
 

AnToXa

prodigy-одаренный ребенок
я бы просто нашел для начала параметр, который говорит сколько данных из таблиц кешировать в памяти и поставил сколько дают :) например 2.5Gb :)

можн еще вот попробовать сделать fulltext index и его поюзать, есть вероятность что тебе поможет отсрочить умирание.
 

Апельсин

Оранжевое создание
> 2Апельсин: max_binlog_cache_size - это просто был пример от балды. Ваши слова "посчитайте" и "проанализируйте" могут содержать хоть один конкретный пример???

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

Повторяю еще раз, переменные от фонаря не ставятся. У вас много запросов на сортировку? замечательно, увеличте буферы отвечающие за сортировку. Насколько? это зависит от ваших таблиц, буфер должен быть достаточно большим что бы mysql не делал сортировку при помощи временных файлов. А делает он это или нет - смотрите EXPLAIN.

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

Ваши запросы вида SELECT .. LIKE '%search_word%' никогда не будут использовать индексы и всегда будут сканировать таблицу полностью. Если вам полнотекстовый поиск не помогает, то вам надо в приципе перестраивать ваш механизм поиска.
 

Bully

Новичок
По всей видимости, liss делает некоторое подобие поисковой системы (как следует из запроса). При запросе с условием вида LIKE '%search%', как уже было замечано, индексы не будут использоваться. Думаю, лучший совет здесь - это предложить почитать материалы про создание своих поисковых систем, производящих индексирование контента.
 

liss

Новичок
Короче ясно. Я хотел просто настройки серверных переменных для памяти и хэша. А в ответ получит только "считай" и как никто толком не объяснил, ни одного примера по приведённым мной переменным.
Вы тыкаете мануалом в котором только ОБЩИЕ принципы работы MySQL, и на пересчёт которых уйдёт туча времени.
Как я понял никто с такими проблемами не сталкивался и конкретно никто мне не сможет помочь
:(((
 

MadMike

Новичок
Тебе уже сказали, что сама задача неправильна.
Юзай innoDB и выставь innodb_buffer_pool_size в 80% оперативы + query_cache_size на 10%. Это гарантированно даст тебе кеширование всей инфы в памяти. В такой постановке задачи - это максимум, чего можно добиться.
+зажми все не-innodb-шные size'ы.
 

liss

Новичок
Как это задача не правильна??????? Я просил о настройке серверных параметров.
InnoDB - не катит однозначно
 

MadMike

Новичок
InnoDB - не катит однозначно
Какие ваши доказательства?
MyISAM кеширует только индексы. Прости меня, AnToXa, но FS cache - не рулит.
Ок, HEAP? Но там вообще почти нет индексов :)
 

liss

Новичок
Я повторюсь наверно. КАК должны выглядеть мои серверные параметры?
 

MadMike

Новичок
Ты меня на работу не нанимал, чтобы я тебе прям конфиги писал. Все, что тебе нужно, я уже сказал.
 
Сверху