Oracle数据库事务编写的个人心得


Oracle数据库中,提供了一种被称为“事务”的控制机制。通过事物,能够完成对数据有效安全的修改操作,使数据库中的数据达到一个数据一致的状态。事
务可以把数据库的好几个操作步骤当作一个整体,当其中有某个操作没有成
功的话,则所有操作都会发生回滚。Oracle数据库就是通过这种机制来保障数据的一致性问题。

但是,事务若编写的不好的话,则不但起不到应有的作用,还会大大降低数据库的性能。如在数据库事务执行时间比较长,就很有可能导致锁冲突,从而降低数据库的并发访问性能。所以,数据库管理员在编写事务时,还是需要遵守几个指导方针。

指导方针一:在事务中尽量使得访问的纪录最小

在事务中,若执行Update等记录操作语句,数据库为了保障数据的一致性,会对其所访问的记录加锁,防止在同一时间内其他用户对其修改。此时,若其他用户需要访问加锁的记录,则必须等待。此时就会发生锁冲突。


以,在事务中要尽量使得访问的记录量最小。如此就可以减少锁定的行数,从而减少事务之间的冲突。这要求数据库管理员在事务中尽量精确的定位语纪
录。如在数据库中读取记录时,最好能够使用Where语句进行定位。并且在编写Where语句的时候,要尽量的详细,最好能够实现一对一,则是最好的。

指导方针二:保持事务尽可能的简洁


事务中尽量使得访问的纪录最小,这是从数量的角度来考虑锁冲突。而保持事务尽可能的简洁,则是从时间的角度来考虑避免锁冲突的事情。保持事务尽可
能的简洁,主要是要求数据库管理员在编写事务的时候,不要把事务写的太过于庞大与复杂。否则,事务在执行的时候就会占用比较多的时间。而这直接导致的后果
就是数据库会把某些记录、甚至一张数据表锁住比较长的时间。这就会恶化锁对数据库的负面影响。

故当用户在知道了必须要进行修改的记录之后,就要马上启动事务;并且在最短时间内执行完相关的修改语句,然后立即递交或者回滚。而且,只有在确实需要时,才打开事务语句。具体的来说,数据库管理员在事务的简洁性方面,可以尝试如下方法。

1、
在同一个事务中不要加入过多的修改或者删除语句。如当用户需要更新用户信息表中的相关数据。例如在员工的编号前加入YG前缀并且同时根据员工入
职年份计算员工工龄。这两个更新语句若从技术上来说,放在同一个事务中并没有什么不妥。但是,当员工数量比较多时,若把他们合并在一起,则这个事务执行得
时间会比较久。为此,最好在更新数据库表的时候,若预计执行时间会比较长,则最好能够把更新语句进行分割,如一列列更新等等。

2、
在更新时,若一次性更新的语句比较多,最好能够选择合适的时候更新。更新某个数据库中记录,其执行所需要的时间往往跟数据库的记录成正比。其记
录越多,更新所需要的时间越多。为此,笔者建议,当需要更新的记录比较多的时候,最好能够选择合理的时机。如有些应用程序在设计时,可以把这个更新放在后
台处理。如此的话,应用程序就可以选择数据库比较空的时候,来更新表中的记录。这无疑可以在很大程度上降低事务对数据库的负面影响。

指导方针三:不要在事务处理期间要求用户输入


据库管理员在编写事务时,要确保在事务启动之前,让数据库系统获
得事务执行所需要的所有内容。如记录的查询条件、所需要更新的内容等等。如果在事务执行的过程中还需要用户的输入,就回滚当前的事务。当用户提供了必要的

参数之后,再重新启动这个事务。因为即使在事务执行的过程中,用户立即响应。但是,用户的反应速度要比电脑的响应速度慢的多。所以,当用户在事务执行的过

程中需要输入参数的话,就会使得这个事务所占用的数据库资源要保持很长的时间。这就有可能增加阻塞的风险。因为当用户没有及时输入所需要的参数时,事务仍
然会保持活动状态,并锁定相关的资源,直到他们响应为止。若用户所需要输入的参数比较多时,用户可能会几分钟甚至一个小时没有输入。

指导方针四:在浏览数据时,尽量不要打开事务

根据笔者的经验,用户更改数据所需要的时间,其实很少。而大部分时间则是在更改数据之前对数据的分析上。如在定位需要对哪些数据要进行更改;如在更改事务递交好的审核;如在考虑该怎么进行更改。这个分析工作所占据的时间往往是大头。

笔者提醒数据库管理员,在所有预备的数据分析完成之前,在用户数据浏览的时候,不要启动事务。也就是说,在用户更改数据的时候,仍然不是触发更新事务的最
佳时间。只有到用户确认无误后,选择“更新”按钮,此时,才可以触发这个事务。并且,及时递交或者回滚这个事务。如此,在事后审核的过程中,事务
就不会继续占用资源。

除了以上这些指导方针外,还有其他的一些小细节要注意。数据库管理员在设计跟更新相关的事务时,要合理选择时机。让事务在保障数据安全性的同时,最大限度的降低其负面作用。

如果想了解更多数据库教程知识可登陆e良师益友网。

时间: 2024-10-08 06:07:41

Oracle数据库事务编写的个人心得的相关文章

oracle数据库事务相关【weber出品必属精品】

事务的概念:事务:一个事务由一组构成一个逻辑操作的DML语句组成 事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束.以下情况会使得事务结束: 1. 执行COMMIT 或者 ROLLBACK 语句 2. 执行DDL或者 DCL语句 3. 用户退出 4. 系统崩溃 一个事务可以包含下列语句: 1. 对数据做出一致性修改的DML语句 2. 一个 DDL 语句 3. 一个 DCL语句 DDL与和DCL语句执行的过程: 1. 首先发出COMMIT; 2. 执行对数据字典的DM

DB2数据库迁移数据到Oracle数据库

刚到公司后,领导交给我个任务:把DB2数据库中的数据导入到Oracle数据库,本人尝试以下方法,挺快的.还要导入db2jcc.jar.db2jcc_license_cu.jar.ojdbc14.jar三个相应的jar包. 数据迁移:1.在DB2数据库中通过以下表查询出表的结构SELECTTABNAME TAB, --表英文名称COLNAME COL, --列名称CASE WHEN TYPENAME='VARCHAR' THEN 'VARCHAR2'WHEN TYPENAME LIKE 'SMAL

Oracle数据库批量数据导出工具开发

Oracle数据库批量数据导出工具开发 需求 最近工作中遇到一个需求,用户频繁要求从后台批量导出大量数据.目前的导出方式是使用PL/SQL Developer工具连接Oracle数据库,编写SQL语句,使用PL/SQL Developer工具自带的导出Excel文件的功能进行导出. 编写SQL查询结果 2.选择导出Excel文件 选择导出Excel文件时可以选择导出XLS.XLSX两种格式的文件. 遇到的问题:当用户要求导出的数据条数太大,超过XLS或者XLSX两种文件可以存储的最大行数时即导出

Oracle数据库之事务

Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行. 如:网上转帐就是典型的要用事务来处理,用以保证数据的一致性. 2. 事务特性 SQL92标准定义了数据库事务的四个特点: 原子性(Atomicity):一个事务里面所有包含的SQL语句是一个执行整体,不可分割,要么都做,要么都不做. 一致性(Consistency)

小菜鸟之Oracle数据库之事务

Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个工作单元操作,要么一个也不执行. 如:网上转帐就是典型的要用事务来处理,用以保证数据的一致性. 2. 事务特性 SQL92标准定义了数据库事务的四个特点: · 原子性(Atomicity):一个事务里面所有包含的SQL语句是一个执行整体,不可分割,要么都做,要么都不做. · 一致性(Consiste

执行多条SQL语句,实现数据库事务。(Oracle数据库)

/// <summary> /// 执行多条SQL语句,实现数据库事务. /// </summary> /// <param name="SQLStringList">(key为sql语句,value是该语句的OracleParameter[])</param> /// <returns></returns> public static bool ExecuteSqlTran(Dictionary<strin

oracle数据库免费基础知识精讲视频分享!

课程简介:数据库基础知识.Oracle的环境搭建.Oracle体系结构.SQL语言基础.函数的使用.约束.索引.数据字典.分组查询.多表连接查询.子查询等.通过对Oracle数据库的系统详解,培养学 生的能力如下:在实际工作中,熟练使用SQL语句进行项目开发:能够使用复杂的SQL语句进行多表关联查询:具备数据库数据的管理和维护能力 . 课程目录: day01_安装数据库软件day02_数据库的基本使用selecl语句的使用day03_限制数据返回day04_字符函数.数字函数.日期函数day05

ORACLE数据库编程

第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或 浏览器/服务器(Browser/Server,B/S)体系结构的数据库之一.二.特点1.完整的数据管理功能:数据的大量性数据的保存的持久性数据的共享性数据的可靠性Oracle优点:可用性强可扩展性强数据安全性强稳定性强三.Oracle数据库的辑逻结构1.表空间一个数据库被分割为数个被称作

数据库事务隔离级别-- 脏读、幻读、不可重复读

一.数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四个级别可以逐个解决脏读 .不可重复读 .幻读 这几类问题. √: 可能出现    ×: 不会出现   脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed × √ √ Repeatable read × × √ Serializable × × × 注意