Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Особенности использования MEMORY-таблиц, ...в php-приложениях 
:(
    Опции темы
qsajeal
Дата 12.12.2008, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



Добрый день всем! smile 

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

Для оптимизации часто в таких случаях рекомендуют использовать MEMORY-таблицы.

Т.е.: у меня существует временная таблица типа MEMORY из которой каждые n-секунд, а также после каждого внесения нового сообщения, считываются строки с временем создания больше предыдущего (в смысле последнего к ней запроса). 

Вопрос:
 Как осуществить перенос данных из MEMORY таблицы в MyISAM, при достижении колличества сообщений в таблице больше x (обычно считается, что слишком большое коллическво данных снижает производительность таких таблиц, т.к. данные начинают храниться не в памяти а в ФС).
Имеется  ввиду "экономный" перенос. Если сделать выборку, а потом вставлять каждую строку - то это долго. Хотя это надо сделать только 1 раз.
UPD: можно конечно одним запросом вставить...



Это сообщение отредактировал(а) qsajeal - 12.12.2008, 10:33
PM MAIL   Вверх
Endeveit
Дата 12.12.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 1
Всего: 7



Код

INSERT INTO table_myisam (bla-bla-bla) SELECT table_memory.bla-bla-bla FROM table_memory

PM WWW   Вверх
Валерия
Дата 12.12.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: нет
Всего: 8



Нужно запрос Endeveit запихнуть в триггер (а еще лучше в мускульный крон, но с ним не работала) а затем почитстить memory таблицу.
Но лучше запихывать не всю таблицу, а всю за исключением последней, допустим, минуты. Удалять также.
Т.е что бы в момент переноса не было проблем с доставкой сообщений.
PM MAIL   Вверх
qsajeal
Дата 13.12.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



Cпасибо. Ценные советы
PM MAIL   Вверх
MuToGeN
Дата 18.12.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 4
Всего: 32



Цитата(Валерия @  12.12.2008,  19:42 Найти цитируемый пост)
запихнуть в триггер

Точно не стоит. Т.к. сведет почти на ноль все бонусы переноса чего-то на MEMORY/HEAP.

Сам пользовал только для временных штук, при потере данных из которых ничего критичного не произойдет, только если небольшие неудобства. Например, для хранения сессий (большим минусом, кстати, оказывалась фиксированная длина ряда). Другими словами, если вам надо failsafe на 100%, то с MEMORY/HEAP лучше не связываться.

В плане оптимизации под критичные нагрузки есть другие нюансы. Тут как раз может наглядно проявиться то, что в некоторых ситуациях InnoDB гораздо быстрее в сравнении с MyISAM из-за row-level locking. Окажется ли быстрее в вашем случае - не знаю.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
qsajeal
Дата 10.1.2009, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.8.2008

Репутация: нет
Всего: нет



Понятно. Т.е. лучше я для сообщений не буду использовать этот способ. Буду использовать для вывода: "Те, кто онлайн".

А еще вопрос: можно ли использовать MEMORY/HEAP таблицы для кеширования переменных наряду с ФС и memcached? 

Т.е. естественно не вместе, а вместо. Имеет ли такой способ кеширования право на жизнь? Делал ли кто-то?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.