ZhangJie Software Development Engineer

数据库学习笔记

2021-11-26
ZhangJie

数据库学习笔记。

基础知识

乐观锁与悲观锁

  • 悲观锁(pessimistic lock):

每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成之后进行数据解锁。

由于对数据进行加锁,期间对该数据进行读写的其它线程都会等待。

适用场景:适合写操作频繁的场景。如果出现大量的读取操作,每次读取的时候都进行加锁,会增加大量的锁开销,降低了系统的吞吐量。

  • 乐观锁:

每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其它线程修改过,则不进行数据更新,否则进行更新。

由于数据没有进行加锁,期间该数据可以被其它线程进行读写操作。

适用场景:适合读操作频繁的场景。如果出现大量的写操作,数据发送冲突的可能性较大,为了保证数据的一致性,应用层需要不断地重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。

总结:两种锁各有优缺点,读取频繁使用乐观锁,写入频繁使用悲观锁。

常用SQL

将时间戳字段转换为年月日时分秒格式显示

SELECT happen_time, strftime('%Y-%m-%d %H:%M:%S', datetime(happen_time, 'unixepoch')) AS formatted_datetime from table_XXX;

sqlite

Windows下编译

  • 下载SQLite3
sqlite-amalgamation-3230100.zip
sqlite-autoconf-3230100.tar.gz
sqlite-doc-3230100.zip
  • Windows下编译SQLite3
cd sqlite-autoconf-3230100
nmake /f Makefile.msc

基本语法

-- 注释

-- 创建DB
E:\SQLite3.23.1\sqlite-autoconf-3230100>sqlite3 Student.db
SQLite version 3.23.1 2018-04-10 17:39:29
Enter ".help" for usage hints.


-- 打开DB
sqlite> .open Student.db


-- 查看所有DB
sqlite> .databases
main: E:\SQLite3.23.1\sqlite-autoconf-3230100\sqlite-autoconf-3230100\Student.db


-- 5种基本类型:integer, real, text, blob, null

integer:可以存储long long类型的数据


-- 查看所有表
sqlite> .tables

Comments

Content