MYSQL близок к зависанию

12
Роман
На сайте с 06.01.2008
Offline
127
1201

Есть бд 3,1 гига, состоящая всего из одной таблицы 3 гига и двух по 50 мегабайт.

Таблица не делима, т.к. все записи в каждом поле уникальны.

ID товара имя товара страна цена код

т.е. страну могут написать как РФ или как Россия или как Раша и т.д.

на сервере еще крутится несколько небольших сайтов, из за этой БД сайты уже полумертвые.

Поскажите как разгрузить?

1.у меня только вариант выделить под базу отдельный комп.

2.Делить на таблицы по ID товара

но в этом случае непонятно будет ли

select * from table1

union

select * from table2

union

select * from table3

быстрее чем

select * from table1

также в таблице полнотекстовые индексы уже 2 гига.

Если у вас был подобный опыт подскажите плз.

Продвижение сайтов, детальные SEO аудиты, работал с крупными брендами. (/ru/forum/752549)
N
На сайте с 06.05.2007
Offline
419
#1

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

обновление или выборка или полнотекстовой поиск?

На первый взгляд решений вагон :

увеличить key_buffer до размера индексов. может он у вас там просто маленький, раз уж нет отдельного mysql-сервера.

полнотекстовый поиск от sphinxsearch.com .

таблицы типа merge.

raid0 ( легко, эффективно, но опасно)

кластеры.

в версиях 5.1 вроде уже partitioning появился ( что-то вроде тонкой группировки хранения данных)

Кнопка вызова админа ()
Andreyka
На сайте с 19.02.2005
Offline
822
#2

Разбить по серверам, на одном таблица с Россией, на другом - с Рашей

Не стоит плодить сущности без необходимости
kxk
На сайте с 30.01.2005
Offline
990
kxk
#3

Darksquall, А кеширование на диск придумать и реализовать что уже непосильная задача для современных программистов :)

Ваш DEVOPS
defuzz
На сайте с 16.09.2007
Offline
19
#4

Я на одном проекте решил эту проблему переездом на PostgreSQL. К огромным базам он относится совершенно спокойно.

Мои "Кавычки" (http://www.kavichki.ru) - записки спящего сисадмина
_
На сайте с 09.06.2008
Offline
158
#5
Darksquall:
Есть бд 3,1 гига, состоящая всего из одной таблицы 3 гига и двух по 50 мегабайт.

Таблица не делима, т.к. все записи в каждом поле уникальны.

ID товара имя товара страна цена код

т.е. страну могут написать как РФ или как Россия или как Раша и т.д.

на сервере еще крутится несколько небольших сайтов, из за этой БД сайты уже полумертвые.

Поскажите как разгрузить?

1.у меня только вариант выделить под базу отдельный комп.
2.Делить на таблицы по ID товара
но в этом случае непонятно будет ли

select * from table1
union
select * from table2
union
select * from table3

быстрее чем

select * from table1

также в таблице полнотекстовые индексы уже 2 гига.

Если у вас был подобный опыт подскажите плз.

Вобще то мускуль реляционная БД, так может стоит потратить денек и Объединить все РФ Россия Раша в один ID из другой таблички, и также другие значения

Настраиваю напильником Joomla 1.5 (http://joomla15.ru) Если постоянно взламывают движок, достаточно сменить хостинг (http://2s4.ru/ytx) всем СРОЧНО (14 дек) обновлять или патчить joomla-сайты (/ru/forum/919351)
V
На сайте с 25.07.2006
Offline
128
#6
Darksquall:

Поскажите как разгрузить?

Вы сначала действительно расскажите, чем собственно mysql-сервер загружен?

Какого рода запросы выполняются чаще всего? Что обычно видно по show processlist? В полной ли мере используются индексы?

Если проблема в запросам к full text index'ам, то их реально никак не оптимизируешь. Зато само собой напрашивается сделать репликацию на второй сервер и использовать два сервера параллельно.

Или же переходить на другой поиск, не full text.

Приватный linux-администратор
qwartyr
На сайте с 19.10.2007
Offline
40
#7

я бы сначала посоветовал воспользоватся tunning-premier.sh или аналогичным скриптом, чтобы понять насколько вы исчерпали ресурсы своего сервера - возможно не все так плохо, и есть вариант оптимизировать настройки.

Если нет - нужно смотреть нагрузку на сервер и узкие места. Возможно, переезд базы на отдельные сервер Вам поможет

профессиональное администрирование серверов (http://www.unixsupport.ru) отзывы (http://www.free-lance.ru/users/qwartyr/opinions/) на free-lance.ru
spideful
На сайте с 02.07.2005
Offline
33
#8
Darksquall:
Если у вас был подобный опыт подскажите плз.

Ищите логические ошибки в запросах. Классический сценарий, когда пишутся кривые запросы, которые при маленькой базе летают, а при разросшейся базе начинают дико тормозить.

LiteCat
На сайте с 03.05.2007
Offline
240
#9

Я всегда начинаю оптимизацию созерцанием MyTOP. Только зная, какие запросы грузят, можно оптимизировать: http://jeremy.zawodny.com/mysql/mytop/

Если ваш случай допускает - кешируйте где можно результаты запросов. В нагруженных проектах, где запросы типичны но сложны, помогает.

Роман
На сайте с 06.01.2008
Offline
127
#10

запросы абсолютно не сложны обычный поиск по БД в полнотекстовых полях, но запросов много и как правило искать нужно по всей БД сразу.

Рашу выделять нет смысла, т.к. там все страны мира и по этому полю поиск не идет

например

12345 Утюг Италия 134 845435

Основное поле утюг в котором и ищем, но т.к. утюг может находится и в детских игрушках и в бытовых товарах и в названиях картин например то разделить по ID тоже мне кажется смысла нет.

Даст ли что кэширование если Утюг ищет некоторый процент пользователей а другой процент уже будет искать автомобиль или еще чтото.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий