Задавайте вопросы, мы ответим
Вы не зашли.
Доброе время суток. Подскажите каким путем правильней оптимизировать базу данных (если учесть, что все индексы уже расставлены правильно), в которой, допустим, таблицы хранят по миллиону записей, а некоторые и более 10 миллионов и одновременно на сайте могут находится по 1 - 10 тыс. человек?
Первое, что пришло в голову - это каждую таблицу разбить на несколько десятков, т. е., например, есть таблица users, в которой миллион пользователей и из нее сделать users_a, где будут хранится пользователи, логины которых будут начинаться на "а"; users_b - пользователи с логинами начинающимися на "b" и так далее...
Второе, что пришло в голову - это создать таблицы-кеши, которые будут обновлятся раз в n минут, но настораживает то, что что бы занести данные в кеш-таблицу может понадобится время чтоб найти запись в таблице миллионнике...
Вообщем подскажите как правильней было бы сделать.
Спасибо за ответы...
Неактивен
Можно использовать partitioning по имени пользователя. Эффективно это разобьет на такие таблицы, как вы написали, но выглядеть будет прозрачно для пользователя.
Неактивен
Только что прочитал статью про partitioning... Возник вопрос - можно ли делать партицирование по нескольким полям?, если в таблице индексы состоят из нескольких полей, то как это может отразится на запросе?, и в примере, на сайте, на котором читал про партицирование был приведен пример с числовыми данными, нормально ли будет работать партицирование с буквенными данными?
Неактивен
Можно и по нескольким столбцам делать partitioning, см. синтаксис CREATE TABLE http://dev.mysql.com/doc/refman/5.1/en/ … table.html
Если составной индекс, то достаточно обычно сделать partitioning по первой колонке.
Неактивен