Я застрял между камнем и твердым местом с приложением, которое я делал. В основном программа генерирует очень большой набор данных (более 10 гигабайт и превышает память на сервере, и его трудно переносить этот набор данных из словаря на другие серверы позже). Я решил использовать базу данных для хранения данных, но я столкнулся с проблемой, в которой, когда я создаю больше процессов, они не используют более 10% своего ядра, но служба mysql всегда составляет около 60-100%.Есть ли способ заставить mysql обрабатывать большое количество одновременных записей?
Ядро, использующее mysql, работает от 60 до 100%. Я взял базовые курсы mysql, но я не эксперт в этом, и я действительно использую его для хранения/распространения локальных переменных программы. Любые предложения о том, как я могу устранить неполадки или даже решить эту проблему? Одна из моих идей заключалась в том, что хотя моя память не может хранить всю базу данных, которую я планирую написать, мне бы хотелось, чтобы сервер использовал некоторую память для обработки некоторых запросов, а затем, возможно, записывал их по мере заполнения памяти (сейчас mysql использует меньше 1 % от памяти сервера).
Как вы знаете мою цель, я не верю в какой-либо конкретный тип системы, поэтому, если mysql не является хорошим решением, я с удовольствием попробую другой инструмент (я собирался использовать hbase, но пошел по дороге mysql первый). Если что-нибудь еще лучше, сообщите мне.
Я нерест 8 процессов, поэтому я думаю, 8 пишет второй. В таблице в настоящее время имеется только один столбец (он должен быть уникальным). У него нет индексов (мысль, которая помогала с чтениями, не пишет, так ничего не делала). Его действительно две операции, их чтение и если они не существуют для записи в базу данных. версия 5.1.61. Я не уверен в настройке, ее значение по умолчанию - centos 6, и я использую Innodb. есть 11 строк результатов, когда я смотрю на заблокированные процессы и 2 из них не заблокированы (один проверяет разрешения, а другой записывает в сеть). – Lostsoul
Я должен добавить, приложение работает на том же сервере, что и база данных. Я могу двигаться, если это необходимо.Сервер имел 8 ядер, но SQL maxing только 1, а приложение занимает меньше 10%, поэтому каждое ядро имеет 90 для MySQL. – Lostsoul
Это действительно ничего не стоит в плане объема. MySQL может справиться с этим во сне на простом переносном компьютере. Отсутствие индексов не очень хорошо, особенно если вы читаете перед записью - без этого индекса mysql выполнит полное сканирование таблицы для каждой вставки (со связанными блокировками во время этого сканирования) - x6 в секунду на огромном наборе данных может действительно пережевывать ваши процессы. Я бы рекомендовал сначала добавить индекс в поля, которые вы просматриваете, и посмотреть, помогает ли это уменьшить конкуренцию. – AlexGad