Быстро выбирает / присоединяется к системам хранения MySQL?

#mysql #storage-engines

#mysql #системы хранения

Вопрос:

У меня есть несколько очень больших баз данных (некоторые до 150 миллионов строк) Я работаю с amp; после первоначальной вставки данных не так много INSERT's происходит; просто много SELECT's amp; использование JOINS .

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

Итак, мне было интересно, может ли кто-нибудь еще порекомендовать какой-либо другой быстрый бесплатный движок хранения для MySQL?

Я только сейчас проверяю tokudb ; есть ли что-нибудь еще, что можно проверить?

Комментарии:

1. novini.net/2010/12/mysql-storage-engines-comparison.html

Ответ №1:

Вам тоже стоит взглянуть на InfiniDB. http://infinidb.org / (один из самых быстрых)

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

Ознакомьтесь с этим блогом, чтобы узнать, как они проводят сравнительный анализ движков (в нем указаны другие типы движков) — http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/

Обратите внимание, что это сравнение предназначено для проектирования звездообразной схемы. Если механизм столбчатой базы данных не соответствует вашим требованиям, вы можете обратиться к XtraDB, который является расширенной версией InnoDB (не самой быстрой, но совместимой с ACID).

ps — Всегда отслеживайте свойства (важные для вас) каждого движка — например, проверки ссылочной целостности, соответствие ACID и т.д. Иногда эти ограничения могут быть более серьезными препятствиями по сравнению с увеличением производительности запросов на 10

Комментарии:

1. Спасибо. Собираюсь проверить это.

Ответ №2:

Вы вообще смотрели Sphinx? Хотя это поисковая система, она также поддерживает поиск без запросов, который аналогичен стандартным запросам SELECT с индексами. Я обнаружил, что это очень помогает при работе с большими наборами данных. Это очень быстро и широко используется на форумах с высоким трафиком, на которых публикуются миллионы (или сотни миллионов) сообщений.

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

http://sphinxsearch.com/docs/2.0.1/sphinxse-overview.html (обратите внимание, я не часто им пользовался с версии до 1.0)

Комментарии:

1. Спасибо. На самом деле я использовал это для другого проекта, поскольку мне нужны были полнотекстовые возможности в таблице InnoDB; но никогда не рассматривал возможность использования этого для этого проекта.

2. Отлично… это дает вам небольшую фору, если вы выберете этот маршрут. Моим основным вариантом использования была подкачка огромных наборов данных (и, конечно, полнотекстовый поиск).

Ответ №3:

Помимо принятия во внимание, какую СУБД вы используете, вам также следует сосредоточиться на оптимизации ваших таблиц, индексов и запросов. Всякий раз, когда у вас есть несколько объединений, присоединяйтесь сначала к наиболее избирательному отношению, а затем к менее избирательному. Проанализируйте свои планы выполнения запросов. Создайте индексы для столбцов, которые часто встречаются в ваших QEPs.

Комментарии:

1. Верно, но не имеет отношения к вопросу. Даже при очень простой и идеально оптимизированной схеме ограничение MyISAM (или даже MySQL) намного ниже, чем, например, Sphinx может сделать.

Ответ №4:

Бретт — При использовании Infobright вы получаете максимальный прирост производительности за счет: 1) Максимально возможного использования сетки знаний 2) сокращения объединений 3) создания «поиска»

Поскольку таблица знаний находится в памяти, вы можете сократить много времени на выполнение запросов, просто добавив дополнительные фильтры. Также рассмотрите возможность использования вложенного выбора вместо объединения. Поступая таким образом, вы можете использовать уже созданный узел знаний (вместо генерации узла «пакет к пакету» на лету).

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

Приветствия,

Джефф