MySQL: организация таблицы по очень большим наборам с высокой частотой обновления

Лично, я просто сделал бы tcpdump для идентификации "недостающего" трафика, затем соответствовал бы этому к локальному порту с netstat. Если это только происходит периодически, когда Вы не вокруг, фон tcpdump с netstats каждые несколько секунд, таким образом, можно подойти все это впоследствии и добраться до источника проблемы.

2
задан 19 March 2010 в 23:43
3 ответа

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

Предоставленный, Вы можете, вероятно, ulimit/configure их далеко, это все еще не оптимальная конфигурация.

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

Вполне честно, если бы это было моим приложением, то я посмотрел бы на два потенциальных решения:

  1. Пойдите с тем, что Вы имеете теперь и разделяете клиентов между несколькими серверами MySQL, если производительность становится проблемой. Если у Вас нет этих данных и этих выстроенных в линию клиентов, это просто еще не проблема. Не проводите слишком много времени, разрабатывая для "что если". Палка с упрощенной схемой и представляет Вашу первую группу пользователей к первому серверу. Когда Вы начинаете добираться до способности, представляете второй сервер и изолируете тех новых пользователей к той базе данных. Sharding, так сказать. Создайте резервную копию его с контролем ресурса и хорошими методами администрирования, таким образом, Вы знаете, когда это "на способности" строка рядом.

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

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

1
ответ дан 3 December 2019 в 10:25
  • 1
    Сделайте некоторую математику - числа не удаются. Мы говорим о много базе данных терабайта. –  TomTom 19 March 2010 в 22:17
  • 2
    Я запустил к математике его, но взял на условиях как ' ожидание ' я didn' t хотят предложить, чтобы бедный парень вышел и купил груду полей Symmetrix если it' s все еще происходящая работа. Тем не менее, если данные уже существуют или готовы к импорту, г-н, Tom^2 здесь является правильным, you' ре, испытывающее необходимость в некоторых серьезных аппаратных средствах и некотором быстром диске. Другие вещи рассмотреть... некоторые данные могут быть заархивированы прочь? Весь рабочий набор? Уровни хранения? –  McJeff 19 March 2010 в 22:38

Гм, на основе моего опыта - Вы, верный MySQL является даже лучшей базой данных для этого? Испытанное рассмотрение Oracle Server или SQL Server (хотя оракул, кластеризирующийся, может иметь преимущество здесь)?

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

Просто идея.

  • Клиент - позволяет, говорят 10.000, поскольку Вы указываете, что это будет быстро расти.
  • Данные - позволяют нам принять 7 миллионов для среднестатистического клиента. Это уже - 70 строк низкопробного золота / серебра для таблицы данных. Да, извините, эти 4 обнуляют, действительно складывают это.
  • Если Вы получаете 10 тегов на данные (Вы ни на что не указываете), мы говорим тесно к 700 миллиардам строк для data_tag поля.

Становится более сумасшедшим.

  • Если DataTag не имеет никакого индекса и никаких издержек (который он имеет), data:tag составляет 10 байтов за запись - 2 для tag_id (65536, достаточно), печально 8 для data_id - Вы не можете обратиться к 700 миллиардам записей в 4 байтах. Это - в общей сложности приблизительно 7 800 гигабайтов необработанных данных (700.000.000.000 * 12 / 1024 / 1024 / 1024). Индексация POSSIBlY удваивает это.

Для обработки этого эффективно, это - ВЫСОКОКАЧЕСТВЕННЫЙ SAN. Мы не говорим "о 10 дисках" здесь, мы говорим о высококачественном SAN возможно с 400 восходящими дисками для обработки всех этих данных - не забывают до сих пор, что у нас действительно нет индексов.

Я выполняю все это на выделенном сервере MySQL 5.0 (четырехъядерный, 8Go поршня) копируемый.

ХОРОШАЯ попытка. Это хорошо для точно что? Извините, что спросил, но привычка RAM на 8 ГБ действительно помогает (не впечатленный здесь), пойдите для машины на 256 ГБ... Который, вероятно, требует AMD и одного из тех действительно дорогой Opteron 8000. Но Вам будет нужна RAM.

Каким-либо образом это было бы (я сомневаюсь, что Вы правильно представили факты), одна из самых больших установок базы данных на мире.

Вы ОПРЕДЕЛЕННО хотите что-то, что может обработать это - сервер кластеризации Oracle или кластеризация SQL Server могут работать, ускоряя это, если действительно необходимо сделать это. Это - по моему скромному мнению, ПУТЬ выше того, какие свободные базы данных могут даже думать об обработке.В самом деле.

И Вам нужны надлежащие процедуры резервного копирования на месте (какому MySQL недостает). Также можно ЛЮБИТЬ Сжатие Страницы данных Подачи SQL 2008 года, которое МОЖЕТ уменьшить размер данных приблизительно 50% на диске. Не только для сохраненного мудрого диска затрат, но и потому что это означает меньше IO - который непосредственно переводит в большее количество производительности здесь (поскольку Вы не можете кэшировать таблицу в памяти).

Так, как я очень не хочу сказать это, можно также хотеть рассмотреть использование IBM DB2 на хорошем Мейнфрейме - и я не означаю выполнять VM Linux на нем. VMS значительно выше к обработке супер баз данных масштаба из-за аппаратной архитектуры. Не спрашивайте о цене ;)

1
ответ дан 3 December 2019 в 10:25
  • 1
    Вы возможно в порядке. Удостоверьтесь, что Вы получаете больше дисков или можете расшириться легко. SuperMicro имеет хорошие случаи SAS с 24 дисками на 2 HE rackspace - я использую их сам на Адаптированном RAID-контроллере, который может обратиться почти к 200 дискам. Velociraptors WD хороши, но МОЖНО хотеть попробовать SSD в конфигурации RAID 5 ;) Это должно легко масштабироваться, мудрые аппаратные средства, для Ваших потребностей ;) –  TomTom 20 March 2010 в 09:36

Мои 2 цента на основе моего MySQL использования опыта много лет - то, что Ваша последняя опция звучит более логичной и реалистичной.

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

Можно спросить намного больше экспертов по MySQL; Ваш второй вариант является наилучшим.

Я могу вдаваться в подробности, если Вам нравится, это - простой ответ для упрощенного вопроса большой проблеме. это идет обоими путями

2
ответ дан 3 December 2019 в 10:25

Теги

Похожие вопросы