OLTP 业务——事务与索引

本文详细介绍了数据库事务的概念、处理方法和特性,包括原子性、一致性、持续性和隔离性。同时,探讨了SQL和JDBC中事务的处理流程。此外,文章还讲解了索引的基本概念、优缺点、使用场景以及如何创建和删除索引,强调了索引在提升查询速度和维护数据库性能中的作用。
摘要由CSDN通过智能技术生成

目录

1. 数据库事务

     1.1 概念

     1.2 事务处理(事务操作)

     1.3 SQL 使用事务

2. JDBC事务处理

3. 事务的特性

     3.1 原子性(Atomicity)

     3.2 一致性(Consistency)

      3.3 持续性(Durability)

      3.4 隔离性(Isolation)

4. 索引

     4.1 概念

     4.2 优缺点

     4.3 使用场景

     4.4 使用

    4.5 explain 命令


1. 数据库事务

     1.1 概念

             事务:一组逻辑操作,使数据从一种状态变换到另一种状态。组成这组操作的各个单元要

                      么全部成功,要么全部失败。在开发者看来,此动作最终表现为一条或多条SQL语句

     1.2 事务处理(事务操作)

               保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行

        方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些

        修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚

        (rollback) 到最初状态

               为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元: 当它全部

        完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为

        错误,所有从起始点以后的操作应全部回退到开始状态。

     1.3 SQL 使用事务

        (1)start transaction;                    开启事务

        (2)执行属于这个事务的 SQL 

        (3)rollback / commit;                  回滚即全部失败

                                                                  提交即全部成功,明确告诉一个事务已完成

        (4)savepoint                                 保存点,一个事务中可以有多个 savepoint;

      注:

            事务只有一条 SQL 语句,可省略事务开启与提交

2. JDBC事务处理

      2.1 一次开启的事务只与一条连接(Connection)有关

      2.2 当一个连接对象被创建时,默认情况下是自动提交事务:每次执行一个 SQL 语句时,如果

            执行成功,就会向数据库自动提交,而不能回滚

      2.3 为了让多个 SQL 语句作为一个事务执行:

             •  调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务

             •  在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务

             •  在出现异常时,调用 rollback(); 方法回滚事务

             •  若此时 Connection 没有被关闭, 则需要恢复其自动提交状态

       2.4 事务处理过程

           (1)有事务且commit(手动)

                     执行结果:数据正常提交

public class Demo1 {
    public static void main(String[] args) throws SQLException {
        String sql1 = "insert into records (rid, bid) values (1, 1)";
        String sql2 = "update books set count = count - 1 where bid = 1";

        // 使用事务,意味着多条 SQL 语句必须在一条 Connection 下完成
        // Connection 中有一个自动提交(AutoCommit)属性,默认情况下为 true(开启状态)
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值