Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Входные данные:
1) Сервер любой (не имеет значение, т.е. будет куплен любой по необходимости)
2) Таблица содержит до 100 тыс. записей. Это правда немного, но все записи находятся в ПОСТОННОМ режиме вставки, чтения, удаления.
3) Каждую секунду к БД идет соединений: 400-800шт. Одно обращение это:
UPDATE ... SET `process_id` = '_X_' WHERE `process_id` = '' LIMIT _N_; SELECT ... WHERE `process_id` = '_X_'
.
Если кто-то не понял логики, объясню: так делается для того, чтобы одну и ту же запись не могли получить одновременно два разных соединения.
4) Через некоторое время (3-5 сек.):
DELETE ... WHERE `id` = '_ID_'
(каждая запись имеет уникальный идентификатор `id`)

Вопрос: какую БД лучше использовать?
Может быть есть какой-то другой алгоритм контроля, чтобы одну строку могло прочитать (использовать) только одно соединение?

P.S. Пробовал на MySql с таблицей типа InnoDB с индексами на `id` и `process_id`. До 5 тыс. записей в таблице молниеносно все работает. Но если записей становится около 20 тыс. в статусе операций БД видно много запросов с ожиданием "wite lock".

Видимо 300 (примерное число) одновременных соединений, выполняя UPDATE мешают друг другу и ждут окончания каждого. Если соединений еще больше, и записей больше происходит, что то похожее на "deadlock" - но все же не "deadlock", со временем операции все завершаются, но из-за медленного выполнения, количество одновременных соединений увеличивается, что и вызывает потерю памяти и еще больше блокировок (количество открывающихся соединения растет, а выполненных и закрывающихся падает).а завершающихся падает.

P.S. P.S.
Как вариант - запретить подключение к базе более 800 соединений. Этот вариант я рассмотрел и мне он не подходит. Просто каждую минуту соединения не будут открываться с ошибкой "max connect" - это не решение. Каждую секунду они должны как открываться, так (через равные промежутки времени) и закрываться (как было бы, если бы не было блокировок).
13 фев 15, 00:17    [17258544]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
NikolayV81
Member

Откуда: Москва
Сообщений: 1112
Artemeey
Входные данные:
1) Сервер любой (не имеет значение, т.е. будет куплен любой по необходимости)
2) Таблица содержит до 100 тыс. записей. Это правда немного, но все записи находятся в ПОСТОННОМ режиме вставки, чтения, удаления.
3) Каждую секунду к БД идет соединений: 400-800шт. Одно обращение это:
UPDATE ... SET `process_id` = '_X_' WHERE `process_id` = '' LIMIT _N_; SELECT ... WHERE `process_id` = '_X_'
.
Если кто-то не понял логики, объясню: так делается для того, чтобы одну и ту же запись не могли получить одновременно два разных соединения.


есть select for update
13 фев 15, 00:50    [17258586]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
NikolayV81
Member

Откуда: Москва
Сообщений: 1112
Artemeey
Входные данные:


Вообще не понятно, а нельзя записи при вставке как-то разделять на группы?
Я правильно понял что вы просто разгребаете поток заданий?
Зачем столько соединений?
13 фев 15, 00:53    [17258590]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Artemeey
Вопрос: какую БД лучше использовать?

Ответ: в данном случае БД будет только мешать. Используйте тривиальный связный список в ОЗУ.

Posted via ActualForum NNTP Server 1.5

13 фев 15, 01:39    [17258652]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30232
Dimitry Sibiryakov,

кстати, да, присоединяюсь.
13 фев 15, 01:48    [17258667]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Dimitry Sibiryakov,

При отключения питания сервера, данные не пропадут?
13 фев 15, 15:30    [17261567]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Artemeey
При отключения питания сервера, данные не пропадут?

Купить ИБП проще и дешевле чем заставлять СУБД работать в режиме для которого они не
предназначены. Кроме того, насколько я понял, у вас идёт постоянный приток новых данных,
так что если немного старых и пропадёт - не беда, потери быстро восполнятся.

Posted via ActualForum NNTP Server 1.5

13 фев 15, 15:44    [17261718]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
DPH3
Member

Откуда:
Сообщений: 456
Если я правильно понял, тут какой-то аналог очереди раздачи заданий.
Поищите любую очередь сообщений с гарантией доставки (если это так важно) и не мучайте БД )

Вообще, если задача - просто распределять таски по воркерам (иногда там встречаются подобные решения), то лучше использовать базу с реализацией skip locked.
13 фев 15, 17:44    [17262605]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Artemeey
Dimitry Sibiryakov,

При отключения питания сервера, данные не пропадут?


А это уже как напишешь.

А СУБД для той задачи можно брать любую из унивесальных.
MSSQL, Mysql/Innodb, oracle, postgres, и много других. Любую.
17 фев 15, 09:35    [17274772]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
DPH3
Если я правильно понял, тут какой-то аналог очереди раздачи заданий.
Поищите любую очередь сообщений с гарантией доставки (если это так важно) и не мучайте БД ).


ну любая очередь с гарантией доставки сообщений тоже как правило СУБД использует, но я бы тоже присоединился к совету --
там можно иногда использовать чуть более другие СУБД...
17 фев 15, 09:37    [17274779]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Изопропил
Member

Откуда:
Сообщений: 31621
MasterZiv
любую из унивесальных

зачем универсальных?
MasterZiv
можно иногда использовать чуть более другие СУБД...

да
17 фев 15, 10:49    [17275146]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
Изопропил
MasterZiv
любую из унивесальных

зачем универсальных?


Имелось в виду, СУБД для OLTP, не специальные для OLAP.
17 фев 15, 15:21    [17276937]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3697
MasterZiv
ну любая очередь с гарантией доставки сообщений тоже как правило СУБД использует

MSMQ не использует.
20 фев 15, 12:41    [17292389]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Dimitry Sibiryakov,

Про питание я дли примера сказал. 99.99% меня уже не утсроит (потеря 00.001%). Остановка может быть вызвана не только прекращением питания.
24 фев 15, 11:35    [17303958]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
DPH3,

автор
Поищите любую очередь сообщений с гарантией


А она точно будет быстрее работать чем 800 заданий в сек.? Если да, то посоветуйте пожалуйста очередь сообщения с гарантией.

При этом процесс должен уметь принимать сообщение, и возвращать для отправки другому процессу, в случае неудачи обработки, аналогично описанному алгоритму.
24 фев 15, 11:39    [17304008]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Artemeey
Про питание я дли примера сказал. 99.99% меня уже не утсроит (потеря
00.001%). Остановка может быть вызвана не только прекращением питания.

При других причинах остановки Вас ничто не спасёт. Бетонная плита, упавшая на сервер,
непобедима.

Posted via ActualForum NNTP Server 1.5

24 фев 15, 12:12    [17304336]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Dimitry Sibiryakov,

Нынешний алгоритм, при потере питания сохраняет данные в базе.
Вариант с оперативной памятью не подходит.
25 фев 15, 18:24    [17311928]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Artemeey
Нынешний алгоритм, при потере питания сохраняет данные в базе.
Вариант с оперативной памятью не подходит.

То есть ты не способен написать программу, которая при завершении сохраняет данные на диск?..

Posted via ActualForum NNTP Server 1.5

25 фев 15, 18:30    [17311956]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3697
см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду.
25 фев 15, 19:37    [17312235]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Dimitry Sibiryakov,

Вы сами предложили использовать оперативку для хранения данных, чтобы все было быстро. Если будем эти данные каждый раз сохранять с высокой частотой на диск, вернемся к первому вопросу. В каком виде хранить такие данные. Я использую Mysql.
26 фев 15, 11:32    [17314429]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Artemeey
Member

Откуда:
Сообщений: 59
Arm79
см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду.


Спасибо! ТАРАНtool мне показался интересным и вероятным решением из NoSQL.
26 фев 15, 11:36    [17314461]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3697
Artemeey
Arm79
см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду.


Спасибо! ТАРАНtool мне показался интересным и вероятным решением из NoSQL.

На самом деле проблем с записью на диск не так уж и много. Допустим 1000 соединений. Создать файл, записать небольшую порцию данных туда, закрыть файл - примерно 0,2 мс, итого до 5000 тысяч мелких файлов в секунду в зависимости от диска. SSD в этом плане побыстрее даже будет.

Но и это можно обойти и ускорить. Например, выравнивая приходящие сообщения по размеру и записывая их в файл (но не закрывая сам файл) с принудительным сохранением буфера. Тогда не будет тратиться время на получение соответствующего handle, а удаление записи - обычной пометкой как удаленную. При новых сообщениях (учитывая, что они равны в размерах) тупо писать на место помеченной как удаленная либо добавлять в конец.

И, естественно, вести в памяти индекс, например на основе avl деревьев. То есть такая своеобразная localdb получится.

Работы там на пару дней всего + еще пару - тестирование.
26 фев 15, 12:02    [17314631]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

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

С какой ещё "высокой частотой"? Повторяю медленно: при завершении программы-диспетчера,
сохранить все ещё не розданные задания на диск. В простой файл. Текстовый, например. Это
будет очень и очень быстрее, чем сохранять их в любой СУБД.

Posted via ActualForum NNTP Server 1.5

26 фев 15, 12:29    [17314811]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9882
Dimitry Sibiryakov,

Да можно и базу использовать. Только если в ней данные хранить, а не фигней заниматься. Блокировки UPDATE'ами реализовывать.

IMHO & AFAIK
26 фев 15, 13:12    [17315142]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте базу, много операция удалений и вставок.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

Можно и базу если нагрузка не слишком велика. Но всё равно по скорости чистой записи с
плоским файлом ничто не сравнится.

Posted via ActualForum NNTP Server 1.5

26 фев 15, 13:55    [17315438]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить