2012-03-04 4 views
0

Во-первых, я намерен использовать память для хранения последних записей «пользовательского обновления» для каждого пользователя.
Я новичок в MySQL. Как создать таблицы в памяти?
На официальном сайте говорится, что при создании таблицы мы можем установить ENGINE = MEMORY. Но в документе утверждается, что эти таблицы в памяти всегда, для чтения, а не для записи.
Любая идея в реализации кольцевого буфера с использованием MySQL

Я просто не знаю, как это сделать.

Я занимаюсь этими проблемами в течение нескольких дней. Я не могу установить memcache и любое расширение PHP на сервере, поскольку я не использую Virtual Private Server, что я могу сделать, это просто передать скрипты и файлы в папку httpdocs ... Я также попытался использовать плоские файлы для хранения данных для работы как буфер/кеш, но я обнаружил, что не могу писать/создавать файлы в каталоге файлов сервера из-за отказа в разрешении, и мне не разрешено изменять это разрешение.
Использование MySQL для буфера может быть единственным выбором для меня. Надеюсь, кто-то может дать мне несколько намеков.

спасибо.

p.s. Я использую сервер Apache Linux, на котором работает PHP, с MySQL как DB.

+0

Не могли бы вы описать, что именно вы пытаетесь сделать? – Brad

+0

На самом деле я пишу сценарии на стороне сервера для своего iPhone-приложения, это приложение периодически отправляет данные на веб-сервер. Эти данные будут храниться в БД MySQL, но я также хочу, чтобы последнее, 30 скажем, 30 данных от каждого пользователя, сохранены в памяти для браузера, чтобы получить доступ к последним данным пользователей на более высокой скорости. – dannail

+0

У вас недостаточно памяти, чтобы масштабировать ее так, как вы предлагаете, если у вас достаточно достаточного количества пользователей для этого. Сделайте правильный индекс и сделайте это на обычной таблице. – Brad

ответ

0

ENGINE = MEMORY таблицы могут использоваться как для чтения, так и для записи.

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

+0

Что вы имеете в виду, что перезагрузка сбоев сервера/сервера приведет к потере таблиц в памяти, но не DELETE? – dannail

+0

@ user988988 Табличные схемы не сохраняются вместе с самой таблицей - таким образом, определение таблицы будет сохранено (поскольку оно не просто сохраняется в памяти). – Amber

0

Вы действительно должны внимательно прочитать о MEMORY-движке MySQL. Данные хранятся в ОЗУ, поэтому, когда сервер выключен или перезагружен, ОЗУ будет очищено, а данные будут стерты. Таблица MEMORY должна быть самым быстрым доступным типом таблицы MySQL, но хранит только временные данные без гарантии.

Если я правильно понял, вы пытаетесь сделать статический кеш-файл какого-то типа данных, созданных с PHP, не так ли? Самый простой способ - записать их в виде сплошного кеша файлов в ваш каталог www, HTML или JS. Если вы не можете chmod ваш каталог для записи, то хранить их в MySQL тоже должно быть хорошо, но только если это действительно помогает.

Идея данных кэша заключается в: сокращении SQL-запросов, сокращении дискового ввода-вывода, сокращении генерации кода. Но использование таблицы MEMORY требует слишком большого объема памяти. Хранить их в обычной таблице MyISAM тоже должно быть хорошо, и вам будет много полезной работы.

Однако должно быть 2 вещи, которые следует учитывать: 1, если кэш не существует при доступе; 2, если кеш обновлен.

Придание вашему результату своего рода ключа должно быть хорошей идеей, поэтому PHP сначала проверяет кешированную дату, если ее не существует, генерирует кеш, затем отображает или иным образом отображает кеш напрямую.

 Смежные вопросы

  • Нет связанных вопросов^_^