Денормализация альтернативы конкретной проблеме MYSQL? - PullRequest
2 голосов
/ 31 марта 2010

У меня довольно специфическая проблема оптимизации.

В настоящее время у меня есть 4 нормализованных таблицы данных.

Каждую секунду, возможно, тысячи пользователей будут получать актуальную информацию из этих таблиц, используя AJAX.

Дело в том, что я могу относительно легко предсказать, какое подмножество данных им нужно ... Последние около 100 записей в этих 4 нормализованных таблицах.

Я занимался исследованием нормализации ... но чувствую, что, возможно, есть более простое решение.

Я думал, что могу как-то каждую секунду запускать один sql-запрос, чтобы сжать необходимую информацию, сохранить ее в таблице с временным кэшированием, а затем получить из этого все пользовательские запросы. Это позволит запускать сложное объединение 4 таблиц только один раз, а затем пользователям просто нужно выполнить простой поиск в кэшированной таблице.

Я действительно не знаю, возможно ли это. Будем весьма благодарны за комментарии к этому или любому другому предложению.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 31 марта 2010

Вы можете использовать memcache ?

Помогает уменьшить нагрузку на дб.

2 голосов
/ 31 марта 2010

Если вы используете MySQL версии 5.1.6 или новее, вы можете воспользоваться Events :

CREATE EVENT e                 
ON SCHEDULE
EVERY 1 MINUTE                 
DO
INSERT INTO tempTable (`col1`,`col2`,`col3`) 
    SELECT `col1`,`col2`,`col3`
    FROM table1
    WHERE col1 = "value"   
1 голос
/ 31 марта 2010

Вы пробовали с кэшированием запросов?

Select SQL_CACHE * from myTable  inner join etc..... ;

если данные часто меняются, это может не сильно помочь. (Кэш автоматически аннулируется при каждом изменении данных.)

Примечание: всегда защищайте свою базу данных, поэтому, если вы можете попробовать кешировать вне базы данных. Также вам может понадобиться проверить переменные SHOW VARIABLES LIKE %query_cache%, чтобы убедиться, что кэширование запросов включено. * +1007 *

0 голосов
/ 31 марта 2010

Денормализация не должна быть результатом thinking. Но о тестировании. Что такое проблемные запросы? Есть ли у вас какие-либо вопросы?

Готово ли ваше другое оборудование - аппаратное обеспечение, веб-сервер, уровень бизнес-логики к такому трафику? Или твой вопрос только воображение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...