SQLumDash is based on SQLite. Concurrency is improved by introducing the row lock feature.
The data lock specification is changed. SQLite's transaction isolation level is Serializable. That of SQLumDash is Read Committed. When user modifies record in a table, a record lock is acquired. If it cannot get a lock, the query fails.
You can use SQLumDash as same as SQLite. API is same.
Row lock information is shared with processes. If a process finished unexpectedly, unnecessary lock information might be stayed. In order to unlock them, please use sqlumdash_cleaner.exe which clears all record information. If there is a process which is in a transaction, sqlumdash_cleaner.exe should be called after end the transaction.
I. Generate SQLumDash source code.
- Apply patch
$ patch -p1 -d sqlite < patch/sqlumdash.patch
- Copy new files
$ cp src/* sqlite/src/
$ cp -R tool/* sqlite/tool/
$ cp test/* sqlite/test/
II. Build psmalloc module
-
Goto
sqlite
directory -
Checkout the psmalloc repository
$ git clone https://github.com/sqlumdash/psmalloc.git
-
Goto
psmalloc
directory -
Build psmalloc library (see README file)
-
Copy the generated psmalloc library to sqlite/psmalloc directory (see README file)
III. Build SQLumDash binary
-
Execute VisualStudio Command Prompt
-
Goto
sqlite
directory -
Use Makefile
$ nmake /F Makefile.msc
DELETE-ALL requires to get a table lock. If someone are modfying the table(INSERT, DELETE and UPDATE), the other user cannot execute DELETE-ALL, and vice versa.
If DDL is executed, a transaction is committeded forcibly automatically. As same as DDL, the following command is also force-commit.
- PRAGMA incremental_vacuum
This software excluding sqlite is released under the MIT License, see LICENSE file.
Copyright (c) 2018-2021 Toshiba Corporation