事务与死锁

事务与死锁

事务

事务是数据库管理系统执行过程中的一个逻辑单位,由一个或多个SQL语句组成,目的是确保数据的完整性和一致性。事务具有ACID四个特性:

  • 原子性(Atomicity):事务内的所有操作要么全部成功,要么全部失败,不允许部分成功的情况。
  • 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态。
  • 隔离性(Isolation):并发执行的事务之间不会互相干扰,即使它们同时操作同一个数据项。
  • 持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的,即使系统发生故障也不会丢失。
TCL(Transaction Control Language)

TCL是事务控制语言,用于控制事务的开始、提交和回滚:

  • BEGIN:开启一个事务。
  • COMMIT:提交事务,将事务中的所有修改永久保存到数据库中。
  • ROLLBACK:回滚事务,撤销事务中所有的修改,使数据库回到事务开始前的状态。
死锁

死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,这些事务都将无法向前推进。常见的死锁原因包括:

  • 两个事务分别锁定了一部分资源,然后又试图请求对方锁定的资源。
  • 锁的顺序不一致。

解决死锁的方法包括:

  • 使用超时机制。
  • 顺序加锁。
  • 死锁检测与回滚。

数据库中的锁用于控制对共享资源的访问,以避免数据的不一致性和冲突。常见的锁包括:

  • 行级锁:锁定数据表中的某一行。
  • 表级锁:锁定整个数据表。
  • 乐观锁:通过版本号或时间戳来控制数据的并发访问,避免直接锁定资源。
  • 悲观锁:假定会发生冲突,直接锁定数据资源。
分布式事务

分布式事务涉及多个数据库系统或资源管理器,需要保证这些系统之间的事务一致性和完整性。常见的分布式事务处理协议包括两阶段提交(2PC)和三阶段提交(3PC)。

函数、过程、索引

函数

函数是SQL中的一种对象,用于执行特定的操作并返回一个值。函数可以分为内置函数和自定义函数:

  • 内置函数:如CONCAT()LCASE()UCASE()NOW()ROUND()等,用于执行常见的字符串、日期、数值等操作。
  • 自定义函数:用户根据需要定义的函数,可以封装复杂的逻辑和计算。

 字符串:concat() 拼接          concat(字段一,`任意字符` 字段二) t from 表名;

lcase()转小写

ucase()转大写

quote()加引号

ltrim()截左边的空格

trim()截去空格

rtrim()截右边的空格

 lpad() 填充  

rpad()

substring 截取指定长度

 char_lengh() 字符长度

 md5() 消息摘要(散列值)

 sha2() 安全哈希算法替代了

 uuid() 全局唯一标识

 uuid_short()

日期和时间

- now()

- sysdate()

- curdate()

- curtime()

- unix_timestamp() 基于1970/1/1日起算

- year()

- mounth

- day()

- date_format() 日期格式化

- time_format() 时间格式化

- adddate()     加上天数

- datediff() 两个日期的差

### 数值函数

- round()   四舍五入

- truncate  直接截断,不做四舍五入;

- floor()   向下取整

- CEIL()    向上取整

select round(3.1435,2), round(3.7,2);

select truncate(3.1,0),truncate(3.7,0);


 

select floor(3.1),floor(3.7);

select floor(3.1),CEIL(3.7);

索引

索引是数据库中用于提高查询效率的一种数据结构,它相当于数据表的目录,可以快速地定位到表中的数据。常见的索引类型包括:

  • 主键索引:唯一标识表中的每一行数据。
  • 唯一索引:保证索引列的值唯一。
  • 普通索引:最基本的索引类型,没有唯一性约束。
  • 全文索引:用于对文本内容进行全文搜索。
过程

过程(存储过程)是一组为了完成特定功能的SQL语句集,它存储在数据库中,通过指定存储过程的名字并给它传递参数(如果该存储过程需要参数)来执行它。存储过程可以封装复杂的业务逻辑,提高代码的重用性和安全性。

总结

事务、死锁、锁、函数、过程和索引是数据库管理系统中非常重要的概念,它们共同确保了数据的完整性、一致性和高效性。在实际应用中,需要根据具体的需求和场景来合理使用这些概念和技术。

你可能感兴趣的:(数据库,oracle)