![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Добрый день всем!
![]() Мною разрабатывается приложение, наподобие чата, но с несколько другим назначением и функционалом. Для оптимизации часто в таких случаях рекомендуют использовать MEMORY-таблицы. Т.е.: у меня существует временная таблица типа MEMORY из которой каждые n-секунд, а также после каждого внесения нового сообщения, считываются строки с временем создания больше предыдущего (в смысле последнего к ней запроса). Вопрос: Как осуществить перенос данных из MEMORY таблицы в MyISAM, при достижении колличества сообщений в таблице больше x (обычно считается, что слишком большое коллическво данных снижает производительность таких таблиц, т.к. данные начинают храниться не в памяти а в ФС). Имеется ввиду "экономный" перенос. Если сделать выборку, а потом вставлять каждую строку - то это долго. Хотя это надо сделать только 1 раз. UPD: можно конечно одним запросом вставить... Это сообщение отредактировал(а) qsajeal - 12.12.2008, 10:33 |
|||
|
||||
Endeveit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 1 Всего: 7 |
|
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Нужно запрос Endeveit запихнуть в триггер (а еще лучше в мускульный крон, но с ним не работала) а затем почитстить memory таблицу.
Но лучше запихывать не всю таблицу, а всю за исключением последней, допустим, минуты. Удалять также. Т.е что бы в момент переноса не было проблем с доставкой сообщений. |
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Cпасибо. Ценные советы
|
|||
|
||||
MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4379 Регистрация: 15.8.2002 Где: Москва Репутация: 4 Всего: 32 |
Точно не стоит. Т.к. сведет почти на ноль все бонусы переноса чего-то на 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! |
|||
|
||||
qsajeal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 4.8.2008 Репутация: нет Всего: нет |
Понятно. Т.е. лучше я для сообщений не буду использовать этот способ. Буду использовать для вывода: "Те, кто онлайн".
А еще вопрос: можно ли использовать MEMORY/HEAP таблицы для кеширования переменных наряду с ФС и memcached? Т.е. естественно не вместе, а вместо. Имеет ли такой способ кеширования право на жизнь? Делал ли кто-то? |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |