Skip to main content

sqlite读写分离库

Project description

sqlite-rw

为sqlite提供读写分离能力,提高并发度。

解决什么问题?

sqlite是一个很好用的嵌入式数据库,但是由于sqlite采用了库级别的文件锁,所以并发能力不强,当存在慢SQL,比如在大表上select count(*) from large_table的时候,会导致其他任务无法写入。

sqlite-rw就是为了解决这个问题的,思路如下

  • 采用读写分离的存储模式,每次写入会持久化写库,并且记录日志到binlog表,然后异步写入读库。
  • 读取的时候可以选择从读库或者写库读取,默认从读库读取。

提高并发度的原理

  • sqlite本身读取是支持并发的,但是写入是不能和读取并发的。所以读库本身是支持并发读取的,同步的写操作是通过id主键写入的,耗时会比较短,基本上不会阻塞读操作。
  • 由于是读写分离的,在读库存在慢SQL的情况下,写库也能够正常工作,在读库慢SQL执行完成之后,系统会把写库的数据同步到读库中,使两者保持一致。

使用限制和影响

  • 存储量相比于单独的sqlite会翻倍
  • 写入性能会有所下降,待详细的基准测试
  • 依赖web.pydb接口进行操作

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlite-rw-0.0.2.tar.gz (7.5 kB view hashes)

Uploaded Source

Built Distribution

sqlite_rw-0.0.2-py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page