2009-11-10 3 views
3

Я - веб-дизайнер из Нидерландов. Я как бы новичок в создании веб-приложений с нуля, я всегда использовал CMS и настраивал их.MySQL решение для хранения двигателя

Я создаю сайт аукциона в php/mysql, который закончен. Недавно я прочитал несколько статей о механизмах хранения.

У меня есть несколько вопросов, которые были беспокоит меня на некоторое время теперь:


Какой механизм хранения данных лучше всего подходит для моего сайта, я использую MyISAM, InnoDB и т.д.

Веб-сайт, который я создаю, является сайтом аукциона, он должен иметь дело с несколькими чтением и написанием КАЖДЫЙ ВТОРОЙ !! Он должен проверить, открыты ли аукционы, закрыты ли, приостановлены, текущая цена и т. Д.

Я знаю, что не все таблицы в моей базе данных будут доступны, это всего лишь 3. В настоящее время они все являются myIsam. Это хорошо? должен ли я изменить их все? Изменить нет? Я действительно не знаю, что делать. Я меняю их, это сильно повлияет на мой сайт. И finnaly эти изменения будут применяться легко, или их трудно сделать.


Еще один вопрос, который я имею о системах кеширования.

Я тоже прочитал несколько о них, но я не знаю, применяются ли они к веб-сайту, который у меня есть. Данные, которые я получаю из базы данных, меняются много. Удобно ли мне кэшировать их? Например, аукцион можно кэшировать, потому что не все элементы меняются. Но аукцион не будет там навсегда, через несколько часов его уйдет.

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


Все эти вопросы я есть, они на самом деле вообще я думаю, я надеюсь, что некоторые люди могут помочь мне с ними, я бы очень признателен.

С уважением

+0

Этот вопрос может быть полезным: http://stackoverflow.com/questions/1680023/mysql-best-storage-engine-for-constantly-changing-data –

ответ

6

Какой механизм хранения данных лучше всего подходит для моего сайта, я использую MyISAM, InnoDB и т.д.

В целом для любой задачи по умолчанию для InnoDB для его ACID требований и ряд -уровень блокировки. Рассмотрите возможность использования MyISAM только для (a) полнотекстового поиска и (b) конкретных случаев, когда производительность в InnoDB недостаточно хороша (довольно редко это значимо, но некоторые типы данных могут извлечь выгоду из профиля MyISAM).

Сайта я строй является веб-сайтом аукциона,

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

он должен иметь дело с несколькими прочитанными и пишет КАЖДЫЙ ВТОРОЙ !!

Это не огромная сумма. Тем не менее, InnoDB также, как правило, лучше работает при обращении с двунаправленным доступом к большой таблице из-за неудачной блокировки на уровне таблиц MyISAM.

Я также прочитал несколько о них, но я не знаю, применимы ли они к тому веб-сайту, который у меня есть.

Не спешите в него. Некоторые веб-авторы, похоже, предполагают, что memcache будет необходим для того, чтобы любой сайт имел достойную производительность, но это действительно не так. Любое используемое вами кэширующее решение добавит сложности и потенциальные пункты отказа, чтобы иметь дело с временем обновления и устаревшей информацией.

Так что не прибегайте к кешированию, пока вам это не понадобится. Если ваши общие интерфейсные страницы обычно выполняют сложные, медленные запросы по набору данных, то да, имея какой-то кеш для этого, будь то в самой базе данных или внешнем решении, таком как memcache, может улучшить скорость. Но, вероятно, вам было бы лучше изменить схему и добавить индексы, чтобы сделать этот запрос дешевле, чем добавление сложности и несогласованности кеша.

И на сайте, который выполняет только «несколько» операций, вам это не понадобится.

+0

Ничего себе, спасибо за отличный пост, это действительно полезная информация для меня, и я думаю, что помню, что мой вопрос решен. У меня есть последний последний недостаток. Если у меня есть структура таблицы, как это упрощенный Тхо, «пользователи», «аукционы», «сообщения», «комментарии» и т.д. ли это удобно для меня, чтобы сделать все таблицы InnoDB, или просто те, которые имеют важную информацию. Или есть еще один критерий, который следует иметь в виду. Может быть, те, которые получают доступ больше всего? –

+1

Да, все таблицы должны по умолчанию использовать InnoDB, если нет особых оснований не делать этого. (Предполагаемая «более высокая скорость» MyISAM не является хорошей причиной и во многих случаях не существует вообще). – bobince

7

InnoDB

В сценарии, как тот, который вы описываете, я бы с InnoDB, не колеблясь. Посмотрите на них, что вы, вероятно, будете нуждаться:

  1. уровне строк блокировки
  2. с несколькими операторами Операции со
  3. Перемотка

Кэширование

У вас есть несколько способов сделать кеш. Но скажите, что ваша первая страница получает 10 ударов в секунду и меняется каждые пять минут. Имеет смысл хранить переднюю страницу в чистом html-файле и обновлять эту страницу каждые пять минут.

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