1. 术语
1.1. atomically
atomicity 的副词形式。原子性。事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。
假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS 必须确保由成功提交的事务完成的所有操纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响。
Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
举个例子:
A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:
- 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。
- 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。 如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个操作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。
我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的操作叫原子性操作。
如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。
1.2. Pooling connection
连接池。
参考:
百度:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
wiki 在软件工程中,连接池是维护数据库连接的缓存,以便在将来对数据库的请求时可以重用这些连接。连接池用于增强在数据库上执行命令的性能。为每个用户打开和维护数据库连接,尤其是对动态数据库驱动的网站应用程序的请求,成本很高,而且浪费资源。在连接池中,在创建连接之后,将它放在池中,并再次使用它,这样就不需要建立新的连接。如果所有连接都被使用,就会建立一个新的连接,并添加到池中。连接池也减少了用户必须等待的时间,以建立连接到数据库的时间。
1.3. collation
排序
SQL 中的 Collation,描述了如何对查询出来的数据进行比较和排序,本质是定义了两个cell的数据进行比较的时候的compare算法。
比对方法
用于指定数据集如何排序,以及字符串的比对规则。
1.4. prepared statements
1.5. stored procedure
存储过程。
参考:
百度:
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
wiki:
存储过程(也称为proc,storp,sproc,StoPro,StoredProc,StoreProc,sp 或 SP)是访问关系数据库管理系统(RDBMS)的应用程序可用的子例程。这些过程存储在数据库数据字典中。
存储过程的用途包括数据验证(集成到数据库中)或访问控制机制。而且,存储过程可以整合和集中最初在应用程序中实现的逻辑。为了节省时间和内存,需要执行多个 SQL 语句的大量或复杂的处理可以保存到存储过程中,所有应用程序都可以调用这些过程。可以通过执行另一个存储过程来使用嵌套的存储过程。
存储过程可以返回结果集,即 SELECT 语句的结果。可以使用游标,其他存储过程,关联结果集定位器或应用程序来处理这些结果集。存储过程还可能包含用于处理数据和游标的已声明变量,这些变量允许循环遍历表中的多行。存储过程流控制语句通常包括 IF,WHILE,LOOP,REPEAT 和 CASE 语句等等。存储过程可以接收变量,返回结果或修改变量并返回它们,具体取决于声明变量的方式和位置。
1.6. transition
参考:
百度: 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
1.7. fuzzy kittens
Fuzzy and Buzzy: A Story of Two Young Kittens Growing Up in the Southland