mexmatius
Новичок
Работа с большими таблицами.
Добрый день.
Необходимость привела к работе с таблицами размерами от 10 тыс строк до 7-8 млн.
Все поля постоянной длинны (CHAR,INT), все служебные поля - уникальны, проиндексированы и т.п. В принципе поиск по отдельным таблицам проходит быстро...
Однако, необходимо между такими таблицами довольно частенько выполнять запросы LEFT JOIN. Так вот, с горечью, иногда наблюдаю полное зависание MySQL сервера. Разобъешь запрос на два, с промежуточным хранением данных работает, целый - нет. Если нужен пример, то вот он:
две таблицы - "A"( 6 млн.) . и B (10 тыс зап.)
A: A1;A2;A3. B:B1,B2.
UPDATE A LEFT JOIN B ON A1 = B1 set A1 = B2 WHERE B2 IS NOT NULL.
На рабочей машине запрос прошел.. На сервере - завис полностью и повесил БД... Версии Mysql разные (раб. - 4.1. сервер - 4.0.23). Думаю не стоит грешить на старость версии и т.п (ведь люди и с 3.* когда то работали...).
Плачевность ситуации - после зависания БД, портятся иногда данные и т.п. Как застраховаться от этого? Ведь таблицы только растут а уже такие проблемы. Не копировать же их перед каждым запросом? Где вычитать соответствующие настройки? ХОСТЕР - НЕКОМПЕТЕНТЕН!
Добрый день.
Необходимость привела к работе с таблицами размерами от 10 тыс строк до 7-8 млн.
Все поля постоянной длинны (CHAR,INT), все служебные поля - уникальны, проиндексированы и т.п. В принципе поиск по отдельным таблицам проходит быстро...
Однако, необходимо между такими таблицами довольно частенько выполнять запросы LEFT JOIN. Так вот, с горечью, иногда наблюдаю полное зависание MySQL сервера. Разобъешь запрос на два, с промежуточным хранением данных работает, целый - нет. Если нужен пример, то вот он:
две таблицы - "A"( 6 млн.) . и B (10 тыс зап.)
A: A1;A2;A3. B:B1,B2.
UPDATE A LEFT JOIN B ON A1 = B1 set A1 = B2 WHERE B2 IS NOT NULL.
На рабочей машине запрос прошел.. На сервере - завис полностью и повесил БД... Версии Mysql разные (раб. - 4.1. сервер - 4.0.23). Думаю не стоит грешить на старость версии и т.п (ведь люди и с 3.* когда то работали...).
Плачевность ситуации - после зависания БД, портятся иногда данные и т.п. Как застраховаться от этого? Ведь таблицы только растут а уже такие проблемы. Не копировать же их перед каждым запросом? Где вычитать соответствующие настройки? ХОСТЕР - НЕКОМПЕТЕНТЕН!