|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Входные данные: 1) Сервер любой (не имеет значение, т.е. будет куплен любой по необходимости) 2) Таблица содержит до 100 тыс. записей. Это правда немного, но все записи находятся в ПОСТОННОМ режиме вставки, чтения, удаления. 3) Каждую секунду к БД идет соединений: 400-800шт. Одно обращение это: Код: plsql 1.
. Если кто-то не понял логики, объясню: так делается для того, чтобы одну и ту же запись не могли получить одновременно два разных соединения. 4) Через некоторое время (3-5 сек.): Код: plsql 1.
(каждая запись имеет уникальный идентификатор `id`) Вопрос : какую БД лучше использовать? Может быть есть какой-то другой алгоритм контроля, чтобы одну строку могло прочитать (использовать) только одно соединение? P.S. Пробовал на MySql с таблицей типа InnoDB с индексами на `id` и `process_id`. До 5 тыс. записей в таблице молниеносно все работает. Но если записей становится около 20 тыс. в статусе операций БД видно много запросов с ожиданием "wite lock". Видимо 300 (примерное число) одновременных соединений, выполняя UPDATE мешают друг другу и ждут окончания каждого. Если соединений еще больше, и записей больше происходит, что то похожее на "deadlock" - но все же не "deadlock", со временем операции все завершаются, но из-за медленного выполнения, количество одновременных соединений увеличивается, что и вызывает потерю памяти и еще больше блокировок (количество открывающихся соединения растет, а выполненных и закрывающихся падает).а завершающихся падает. P.S. P.S. Как вариант - запретить подключение к базе более 800 соединений. Этот вариант я рассмотрел и мне он не подходит. Просто каждую минуту соединения не будут открываться с ошибкой "max connect" - это не решение. Каждую секунду они должны как открываться, так (через равные промежутки времени) и закрываться (как было бы, если бы не было блокировок). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 00:17 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyВходные данные: 1) Сервер любой (не имеет значение, т.е. будет куплен любой по необходимости) 2) Таблица содержит до 100 тыс. записей. Это правда немного, но все записи находятся в ПОСТОННОМ режиме вставки, чтения, удаления. 3) Каждую секунду к БД идет соединений: 400-800шт. Одно обращение это: Код: plsql 1.
. Если кто-то не понял логики, объясню: так делается для того, чтобы одну и ту же запись не могли получить одновременно два разных соединения. есть select for update ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 00:50 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyВходные данные: Вообще не понятно, а нельзя записи при вставке как-то разделять на группы? Я правильно понял что вы просто разгребаете поток заданий? Зачем столько соединений? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 00:53 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyВопрос: какую БД лучше использовать? Ответ: в данном случае БД будет только мешать. Используйте тривиальный связный список в ОЗУ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 01:39 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, кстати, да, присоединяюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 01:48 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, При отключения питания сервера, данные не пропадут? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 15:30 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyПри отключения питания сервера, данные не пропадут? Купить ИБП проще и дешевле чем заставлять СУБД работать в режиме для которого они не предназначены. Кроме того, насколько я понял, у вас идёт постоянный приток новых данных, так что если немного старых и пропадёт - не беда, потери быстро восполнятся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 15:44 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Если я правильно понял, тут какой-то аналог очереди раздачи заданий. Поищите любую очередь сообщений с гарантией доставки (если это так важно) и не мучайте БД ) Вообще, если задача - просто распределять таски по воркерам (иногда там встречаются подобные решения), то лучше использовать базу с реализацией skip locked. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2015, 17:44 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyDimitry Sibiryakov, При отключения питания сервера, данные не пропадут? А это уже как напишешь. А СУБД для той задачи можно брать любую из унивесальных. MSSQL, Mysql/Innodb, oracle, postgres, и много других. Любую. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 09:35 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
DPH3Если я правильно понял, тут какой-то аналог очереди раздачи заданий. Поищите любую очередь сообщений с гарантией доставки (если это так важно) и не мучайте БД ). ну любая очередь с гарантией доставки сообщений тоже как правило СУБД использует, но я бы тоже присоединился к совету -- там можно иногда использовать чуть более другие СУБД... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 09:37 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
MasterZivлюбую из унивесальных зачем универсальных? MasterZivможно иногда использовать чуть более другие СУБД... да ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 10:49 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ИзопропилMasterZivлюбую из унивесальных зачем универсальных? Имелось в виду, СУБД для OLTP, не специальные для OLAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2015, 15:21 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
MasterZivну любая очередь с гарантией доставки сообщений тоже как правило СУБД использует MSMQ не использует. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2015, 12:41 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Про питание я дли примера сказал. 99.99% меня уже не утсроит (потеря 00.001%). Остановка может быть вызвана не только прекращением питания. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:35 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
DPH3, авторПоищите любую очередь сообщений с гарантией А она точно будет быстрее работать чем 800 заданий в сек.? Если да, то посоветуйте пожалуйста очередь сообщения с гарантией. При этом процесс должен уметь принимать сообщение, и возвращать для отправки другому процессу, в случае неудачи обработки, аналогично описанному алгоритму. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 11:39 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyПро питание я дли примера сказал. 99.99% меня уже не утсроит (потеря 00.001%). Остановка может быть вызвана не только прекращением питания. При других причинах остановки Вас ничто не спасёт. Бетонная плита, упавшая на сервер, непобедима. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2015, 12:12 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Нынешний алгоритм, при потере питания сохраняет данные в базе. Вариант с оперативной памятью не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 18:24 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyНынешний алгоритм, при потере питания сохраняет данные в базе. Вариант с оперативной памятью не подходит. То есть ты не способен написать программу, которая при завершении сохраняет данные на диск?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 18:30 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2015, 19:37 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Вы сами предложили использовать оперативку для хранения данных, чтобы все было быстро. Если будем эти данные каждый раз сохранять с высокой частотой на диск, вернемся к первому вопросу. В каком виде хранить такие данные. Я использую Mysql. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 11:32 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Arm79см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду. Спасибо! ТАРАНtool мне показался интересным и вероятным решением из NoSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 11:36 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyArm79см. тарантул, вполне потянет такую мелочь как тысячи соединений и тысячи операций чтения/записи в секунду. Спасибо! ТАРАНtool мне показался интересным и вероятным решением из NoSQL. На самом деле проблем с записью на диск не так уж и много. Допустим 1000 соединений. Создать файл, записать небольшую порцию данных туда, закрыть файл - примерно 0,2 мс, итого до 5000 тысяч мелких файлов в секунду в зависимости от диска. SSD в этом плане побыстрее даже будет. Но и это можно обойти и ускорить. Например, выравнивая приходящие сообщения по размеру и записывая их в файл (но не закрывая сам файл) с принудительным сохранением буфера. Тогда не будет тратиться время на получение соответствующего handle, а удаление записи - обычной пометкой как удаленную. При новых сообщениях (учитывая, что они равны в размерах) тупо писать на место помеченной как удаленная либо добавлять в конец. И, естественно, вести в памяти индекс, например на основе avl деревьев. То есть такая своеобразная localdb получится. Работы там на пару дней всего + еще пару - тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 12:02 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
ArtemeeyЕсли будем эти данные каждый раз сохранять с высокой частотой на диск, вернемся к первому вопросу. С какой ещё "высокой частотой"? Повторяю медленно: при завершении программы-диспетчера, сохранить все ещё не розданные задания на диск. В простой файл. Текстовый, например. Это будет очень и очень быстрее, чем сохранять их в любой СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 12:29 |
|
Посоветуйте базу, много операция удалений и вставок.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да можно и базу использовать. Только если в ней данные хранить, а не фигней заниматься. Блокировки UPDATE'ами реализовывать. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2015, 13:12 |
|
|
start [/forum/topic.php?fid=35&msg=38879380&tid=1552300]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 294ms |
0 / 0 |