SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.06.2011 07:30:31

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Оптимизация огромных таблиц

Доброе время суток. Подскажите каким путем правильней оптимизировать базу данных (если учесть, что все индексы уже расставлены правильно), в которой, допустим, таблицы хранят по миллиону записей, а некоторые и более 10 миллионов и одновременно на сайте могут находится по 1 - 10 тыс. человек?

Первое, что пришло в голову - это каждую таблицу разбить на несколько десятков, т. е., например, есть таблица users, в которой миллион пользователей и из нее сделать users_a, где будут хранится пользователи, логины которых будут начинаться на "а"; users_b - пользователи с логинами начинающимися на "b" и так далее...

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

Вообщем подскажите как правильней было бы сделать.

Спасибо за ответы...

Неактивен

 

#2 04.06.2011 07:49:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Оптимизация огромных таблиц

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

Неактивен

 

#3 04.06.2011 08:42:20

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: Оптимизация огромных таблиц

Только что прочитал статью про partitioning... Возник вопрос - можно ли делать партицирование по нескольким полям?, если в таблице индексы состоят из нескольких полей, то как это может отразится на запросе?, и в примере, на сайте, на котором читал про партицирование был приведен пример с числовыми данными, нормально ли будет работать партицирование с буквенными данными?

Неактивен

 

#4 04.06.2011 11:57:40

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Оптимизация огромных таблиц

Можно и по нескольким столбцам делать partitioning, см. синтаксис CREATE TABLE http://dev.mysql.com/doc/refman/5.1/en/ … table.html

Если составной индекс, то достаточно обычно сделать partitioning по первой колонке.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson