SQLite Альтернатива для более высоких параллельных транзакций - PullRequest
0 голосов
/ 20 октября 2011

Кто-нибудь может предложить легковесную базу данных, которая лучше подходит для одновременных подключений? Я буду постоянно обновлять / вставлять / удалять строки из моей таблицы в нескольких потоках, поэтому мне нужно что-то, что может с этим справиться. БД очень мала. Только 2 таблицы, одна с 3 столбцами и 150 строками, которые только обновляются, и 2-я таблица с 2 столбцами и максимум 15 000 строк, которые постоянно вставляются, извлекаются / удаляются, затем новые данные вставляются, когда таблица становится маленькой (основной очереди).

Логика этого требует SQLite, потому что он очень легкий, однако тот факт, что я выполняю вызовы на более чем 50 потоках, в основном убивает мою производительность из-за блокировки SQLite. Все мои потоки ждут друг друга, в основном делая потоки бессмысленными примерно после 20.

Я бы очень хотел избежать установки полной копии, скажем, mySQL или SQL-сервера, если бы мог. Я надеюсь на лучшее решение, хотя, если это так, я сделаю это. (Кто-нибудь знает, лучше ли для этого SQL Express 4?)

В настоящее время я занимаюсь разработкой в ​​.net Framework 4.0 с использованием SQLite.net и модели Entity 4.0, хотя этот вопрос должен работать и применяться к любому языку, поскольку SQLite широко используется.

Заранее спасибо!

1 Ответ

0 голосов
/ 20 октября 2011

Помимо MS SQL Express, о котором вы уже упоминали, есть Встроенный в Firebird сервер базы данных, возможно, он будет работать лучше, чем SQLite, для ваших случаев использования.

Или рассмотрите возможность уменьшения количества потоков или очереди запросов вручную, используя пользовательскую блокировку / передачу сообщений. Отказ от самого быстрого варианта только потому, что ваш текущий код использует библиотеку неправильно, кажется мне не совсем правильным.

...