事务属性和线程实现
来源:互联网 发布:主力乾坤主图指标源码 编辑:程序博客网 时间:2024/05/21 07:01
- 两种主要的事务ID类型:全局ID和本地ID。事务管理器分配全局ID,当一个事务需要多个事务资源参与时候需要全局ID。如果资源管理器也分配事务ID,那么它们是与此全局事务ID相关联的本地ID,因为它们指向同一个事务。
- 链式事务,应用程序执行的事务序列形成一个链,一个事务接一个事务的执行,中间没有间隔。非链式模型,程序完成一个事务后,不需要立即开始执行一个事务,例如可以使用start开始一个事务,commit/rollback提交或者回滚一个事务方式,显示定义每个事务的开始和结束。
- 事务属性:
- requires new:每个方法调用都在新的事务中开始执行,不管调用者是否在已经在事务中执行,
- required:如果调用已经在事务中运行,则被调用的方法也在此事务中执行,如果调用者未在事务中运行,那么被调用方法开始在新事务中执行。
- supported:如果调用者已经在事务中运行,则被调用方法在此事务中执行,如果调用者被在事务中运行,那么被调用方法不在事务中执行。
- noe supported:被调用方法不在事务中执行,即使创建此对象的程序正在事务中运行。
- 影响TP系统体系的因素:
- 组件是否共享地址空间。
- 此地址空间是否有多个线程中的一个线程在执行。
- 是否有硬件、操作系统或者语言机制保护一个地址空间的程序,避免不适当的修改彼此的内存。
- 实现线程:
- 中间件线程,操作系统并不知道线程,而是当做一个普通的进程。这里有一个技术难题,就多线程中执行的事务服务器试图从磁盘读取数据或者试图读取通信消息,并且它需要的数据还不可用,那么操作系统一般会使进程处于睡眠。如果只有一个线程,那么正如锁希望的--使进程处于睡眠状态,直到它有事做。如果在进程中的多线程运行,则所有的线程,进而所有的客户端都会有延迟,这不是好事情,并且这里会存在2级调度,操作系统调度进程,事务中间件正在调度线程,可能存在调度中存在的问题而导致事务失败或者其他问题。
- 操作系统线程,如果操作系统支持多线程,那么操作系统会跟踪所有的线程,当线程发起IO操作,操作系统使线程处于睡眠状态,操作系统能够识别什么时候可以调用线程,并调用做好执行准备的另一个线程,而不是使整个进程处于睡眠状态,这样减少了上下文切换。如果是SMP多处理器或者多喝处理器运行,则它可以使用并发,不同的线程分配到不同的core上运行。当然,这也有性能的开销,操作系统设计线程切换和系统调用,一般比进程切换开销小,但是比用户态的线程操作更昂贵。第二个问题,就是,内存保护问题,多线程运行在相同的进程空间中,线程之间只有很少或者没有内存保护,线程执行的错误会潜在的危害整个进程的内存。
- 服务器类,当多线程操作系统进程不可用时,可以选择一组进程模仿一组线程,每个进程有自己的内存空间,互相独立,有很强的内存保护的效果。由于进程是单线程的,即使同步IO操作期间发生阻塞,是进程处于睡眠状态,没有什么关系。由于服务器类中进程的失败是彼此独立的,因为其他进程继续运行,如果在多线程进程中,一个线程的故障会影响整个进程,尤其是此线程破坏了其他线程的内存。但是单进程单线程方式,存在2个问题,第一个问题是如果进程开的太多,上下午切换频繁,工作的状态并不理想。第二个问题,就是负载均衡,如何保持一些进程很繁忙,一些进程很闲。
0 0
- 事务属性和线程实现
- 事务隔离级别和事务属性
- spring事务和传播属性
- 线程和事务的关系
- spring只读事务属性和超时事务属性
- 数据库的事务实现与ACID属性
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- spring事务传播属性和事务隔离级别
- 面试-事务属性小结和事务的隔离级别
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- Spring事务隔离级别和事务的传播属性
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- 锁的概述和事务的属性
- python pip源配置,pip配置文件存放位置
- Android开发——自定义颜色
- 欢迎使用CSDN-markdown编辑器
- swpu2017寒假作业通知
- Cocoapods错误
- 事务属性和线程实现
- 理解Mysql binlog 日志的三种模
- 一键玩王者荣耀?C2engine支持APP转H5游戏
- list 对象 输出打印 or list 对象转json字符串
- ios 查看崩溃日志(使用第三方软件)
- document.body.offsetWidth 网页可见区域高宽,offset、client、scroll使用方法详解,页面位置距离
- jquery validate 验证规则扩展
- Python监控磁盘空间及发邮件提醒
- jquery绑定函数写在$()函数里面与外面的区别