0

0

Oracle数据库编写有效事务指导方针

php中文网

php中文网

发布时间:2016-06-07 16:53:46

|

1511人浏览过

|

来源于php中文网

原创

在Oracle数据库中,提供了一种被称为ldquo;事务rdquo;的控制机制。通过事物,能够完成对数据有效安全的修改操作,使数据库

  在Oracle数据库中,提供了一种被称为“事务”的控制机制。通过事物,能够完成对数据有效安全的修改操作,使数据库中的数据达到一个数据一致的状态。举个简单的例子,现在有一个借书系统中设涉及到两张表,一张是图书库存表,一张是用户借书情况表。在用户借书的时候,数据库需要进行两个操作,一是从图书库存表中扣掉库存;另一个操作时在用户借书表中加入这个借书操作。数据库在操作时,往往是先扣减库存,然后再在用户借书情况表中加入借书纪录。假设用户在借书的时候,第一步操作成功,即已经从图书库存表中扣除了某书的库存;但是,在第二步时由于发现用户借的书已经超量或者发现用户的卡中还有罚款不能够借书时,借书就会不成功。若没有事务做控制的话,很明显图书库存就会不准。而在事务的管理下,当第二步不成功的话,第一步操作就会发生回滚。也就是说,事务可以把数据库的好几个操作步骤当作一个整体,当其中有某个操作没有成功的话,则所有操作都会发生回滚。Oracle数据库就是通过这种机制来保障数据的一致性问题。

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

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

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

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

  如在库存盘点的时候,事务处理语句需要从数据库中读取一定数量的记录,并且为这些记录进行加锁。此时,若记录读取的过多的话,就会对其他用户访问表中的记录造成麻烦。为此,数据库管理员应该建议应用前台应用程序在开发的过程中,加入一些限制条件。如按照产品的分类来更新库存。如此的话,就可以减少一个事务一次性读取的记录数量,从而把锁的影响降低到最低。

西安龙昌光学元件企业网站1.1
西安龙昌光学元件企业网站1.1

在原有基础上进行了较大改动进行了代码重写,页面结构和数据库结构均作了优化,基本功能: 1. 精美flash导入页面; 2. 产品发布,支持一级分类; 3. 公司简介、售后服务、联系我们,可进行后台管理; 4. 也可以照“公司简介”的方法增加其他内容,如企业文化、企业荣誉... 5. 采用eWebEditor是网站后台具有强大的编辑功能; 初始帐号: admin 初始密码: admin888

下载

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

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

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

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

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

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 3.6万人学习

Java 教程
Java 教程

共578课时 | 53.2万人学习

oracle知识库
oracle知识库

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号