Лично, я просто сделал бы tcpdump для идентификации "недостающего" трафика, затем соответствовал бы этому к локальному порту с netstat. Если это только происходит периодически, когда Вы не вокруг, фон tcpdump с netstats каждые несколько секунд, таким образом, можно подойти все это впоследствии и добраться до источника проблемы.
Не зная много о Вашем приложении кроме того, что Вы поместили здесь, немного трудно сказать. Ваша модель данных довольно упрощенна, и это к Вашему преимуществу, поскольку Вы ожидаете, буквально, миллиарды строк. Я постарался бы не создавать вверх 5k таблиц, поскольку Вы, вероятно, столкнетесь с проблемами дескриптора файла и ограничениями кэша в будущем при попытке этого.
Предоставленный, Вы можете, вероятно, ulimit/configure их далеко, это все еще не оптимальная конфигурация.
Вы создаете индексы на неключевых данных также? Эти столбцы имени, например? Это могло замедлить Вашу производительность записи, таким образом, что сохранены Ваши 15-минутные пакетные задания.
Вполне честно, если бы это было моим приложением, то я посмотрел бы на два потенциальных решения:
Пойдите с тем, что Вы имеете теперь и разделяете клиентов между несколькими серверами MySQL, если производительность становится проблемой. Если у Вас нет этих данных и этих выстроенных в линию клиентов, это просто еще не проблема. Не проводите слишком много времени, разрабатывая для "что если". Палка с упрощенной схемой и представляет Вашу первую группу пользователей к первому серверу. Когда Вы начинаете добираться до способности, представляете второй сервер и изолируете тех новых пользователей к той базе данных. Sharding, так сказать. Создайте резервную копию его с контролем ресурса и хорошими методами администрирования, таким образом, Вы знаете, когда это "на способности" строка рядом.
Что-то хотело бы работу Cassandra или MongoDB? Я не знаю достаточно о Ваших запросах, чтобы предложить это или исключить его. MongoDB мог бы быть опцией. Стоящий проверки.
Так, я предполагаю короче говоря, позволяю MySQL сделать то, что он преуспевает, просто выполните больше из них. Или, если это возможно, посмотрите на что-то как монго.
Гм, на основе моего опыта - Вы, верный MySQL является даже лучшей базой данных для этого? Испытанное рассмотрение Oracle Server или SQL Server (хотя оракул, кластеризирующийся, может иметь преимущество здесь)?
Если Вы думаете, что стоимость лицензирования собирается уничтожить Вас, позволить мне просто сказать, что у Вас еще нет идеи, в каких аппаратных средствах Вы испытываете необходимость для выполнения ее. После того как Вы получаете первые предложения по SAN, в котором Вы нуждаетесь для того - Вы, вероятно, будете смеяться над ценой соответствующего программного обеспечения.
Просто идея.
Становится более сумасшедшим.
Для обработки этого эффективно, это - ВЫСОКОКАЧЕСТВЕННЫЙ 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 значительно выше к обработке супер баз данных масштаба из-за аппаратной архитектуры. Не спрашивайте о цене ;)
Мои 2 цента на основе моего MySQL использования опыта много лет - то, что Ваша последняя опция звучит более логичной и реалистичной.
Движение с Данными и одним data_tag на клиента имеет более простую полную управляемость, чем Ваша текущая схема. Кодирование для Вашей второй опции будет более простым также.
Можно спросить намного больше экспертов по MySQL; Ваш второй вариант является наилучшим.
Я могу вдаваться в подробности, если Вам нравится, это - простой ответ для упрощенного вопроса большой проблеме. это идет обоими путями