Решение механизма хранения MySQL - PullRequest
3 голосов
/ 10 ноября 2009

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

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

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


Какой тип хранилища лучше всего подходит для моего сайта, использую ли я myIsam, innodb и т. Д.

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

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


Другой вопрос, который у меня есть, касается систем кэширования.

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

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


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

Привет

Ответы [ 2 ]

7 голосов
/ 10 ноября 2009

InnoDB

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

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

Кэширование

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

6 голосов
/ 10 ноября 2009

Какой тип хранилища лучше всего подходит для моего сайта, использую ли я myIsam, innodb и т. Д.

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

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

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

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

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

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

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

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

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

...