Только что увидел обновление, 60-столбцовую таблицу с в основном полями VARCHAR (2k) - это (потенциально) таблица монстров.
Обо всем по порядку ...
Вы должны понять свое узкое место в первую очередь. Со стороны приложения, вернитесь к своему однопоточному пакетному решению (1/2 / 3k за раз) и начните запускать его, войдите в систему на компьютере с БД и запустите «top» - посмотрите, сколько время, которое занимает процесс БД И сколько (если есть) ва% времени, которое машина показывает.
Если top показывает ЛЮБОЙ w% времени, это означает, что ваша БД привязана к вводу / выводу, и вам, вероятно, нужно рассмотреть несколько машин БД (сегментов) или рассмотреть возможность размещения SSD на хост-машине.
Это оно; Ваше исследование останавливается здесь. Неважно, сколько процессора занимает БД или насколько насыщен ваш клиент приложения; если вы сталкиваетесь с проблемами задержки ввода / вывода на хосте DB, это так же быстро, как и когда-либо.
СОВЕТ Если об аппаратных изменениях не может быть и речи, в зависимости от используемой файловой системы (Linux) вы можете попробовать отключить ведение журнала или запись метаданных для БД, чтобы немного повысить производительность на уровне файловой системы. Вы можете сделать что-то подобное в NTFS, но это даст вам небольшой импульс. Это не будет 2х.
Теперь вторые вещи вторые ...
Допустим, у вас было почти нет времени, но ваш процессор полностью привязан процессом БД. Ваша единственная возможность сейчас состоит в том, чтобы ввести больше машин (сегментов) БД и разделить работу.
Опять же, вы закончили свои исследования, если это так. Вы ничего не можете сделать, чтобы ускорить процессор.
Наконец, третье ... третье ...
Допустим, БД ничего не делает. Затем перейдите к клиентскому компьютеру, на котором выполняется пакетная вставка, и проверьте загрузку процессора - он не привязан? Если это так, запустите еще несколько машин, делающих те же пакетные вставки, и посмотрите, сможете ли вы получить линейную рампу.
Если процессор не привязан, запустите еще несколько потоков на той же машине, пока он не будет привязан, и посмотрите, как масштабируется БД.
Я думаю, что вы, возможно, уже пробовали это, поэтому я предполагаю, что либо ваш клиентский хост уже был привязан (и больше потоков не будет иметь значения), либо БД уже достигла своего предела и не может масштабироваться дальше.
добавление
Выполнение необработанных вставок в неиндексированную таблицу, в которой нет мусора, по сути является операцией APPEND, которая должна выполняться так же быстро, как диск может обрабатывать записи.
Создание большего количества таблиц на одном и том же хосте не поможет, если что-то увеличит ваши запросы к диску (чтобы добраться до других таблиц на диске, к которому нужно добавить) и замедлит работу.
Крайне важно сначала выяснить это узкое место, а затем мы можем его оптимизировать.
Надеюсь, это поможет! Держать нас в курсе.