PHP mysql выбирает тип движка для статистики - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь разработать интерфейс для сетевой системы.По сути, программное обеспечение передает весь трафик данных через UDP, а другое программное обеспечение собирает и вставляет данные в mysql (у клиентов нет сервера mysql, только сервер с доступом через пользовательский интерфейс имеет сервер mysql).Есть около 50 клиентов с очень высоким трафиком и операция вставки на сервере MySQL очень быстро.но меня интересуют проблемы с производительностью, потому что я планирую печатать статистику в режиме реального времени с помощью push-сервера или чего-то еще, кроме того, эти статистические данные о трафике должны сохраняться в течение длительного времени, так какой же механизм базы данных мне следует использовать?myisamm, innodb, архив?Кто-нибудь может объяснить мне, пожалуйста?Также я открыт для предложений

Ответы [ 3 ]

1 голос
/ 17 января 2012

Ниже приведены подробные сведения о innodb и myisam

  • myisam лучше для больших объемов чтения, innodb для больших объемов обновления из-за блокировки таблицы и строки.

  • innodb заносится в журнал и может восстанавливаться после сбоев, когда myisam не может, во многом как файловые системы NTFS и FAT.

  • myisam имеет полнотекстовое индексирование, innodb не делаетt.

  • В innodb есть поддержка транзакций, фиксация и откат, в myisam их нет.

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

ОБНОВЛЕНИЕ:
Для таблиц MyISAM, если в середине файла данных нет свободных блоков, поддерживаются одновременные операторы SELECT и INSERT.При таких обстоятельствах вам очень редко нужно использовать INSERT DELAYED с MyISAM. вставить задержки

1 голос
/ 17 января 2012

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

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

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

Книга High Performance MySQL , вероятно, должна быть вашим первым портом вызова.

Звучит как внушительный проект - удачи в этом.

0 голосов
/ 17 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...