Sybase 12.5锁机制的一点理解
来源:互联网 发布:网络视频课怎么刷 编辑:程序博客网 时间:2024/05/20 09:27
对性能的理解
不同的人对性能有不同的理解,但是对下面所列的指标都可以达成共识:
查询响应时间,比如一个查询花费了多长时间。
吞吐量,比如在单位时间内所执行的事务次数。
并发性,比如可以同时让多少个进程执行操作。
并发用户,比如可以支持多少个用户并发操作。
产生性能瓶颈的因数很多,在各个层次上都有可能出现瓶颈:
1,体系结构。比如数据的物理分布不合理,网络不稳定的情况。
2,数据库服务器的配置。比如没有设置表索引,导致大数据量的查询时间很长。
3,相关数据驱动。比如没有选择合适的数据库驱动,一般最好选择官方所提供的数据驱动。
4,应用服务器的配置。比如没有进行数据库连接池的设置。
5,应用程序的设计。比如SQL,存储过程很复杂,事务过大。
当然,性能优化中的优化实际是进行权衡考虑的过程。提升性能的同时,是以其他的牺牲为代价的。
对锁的一点理解
为什么会出现锁定:比如两个并发进程,一个要查询,一个要更新。对于类似的并发情况,就需要进行并发控制。那么在数据库中就通过锁的机制来进行控制。
数据库中的事务隔离级别主要有以下几个级别:
0, 允许读取未提交的数据。
1, 被锁定的对象只能被持有锁的进程访问,而不允许其他读操作者或者写操作者。(这是数据库默认的级别,一般使用排他锁)。
2, 防止对数据的非重复读取。当另一个进程已经更新了其中一个先前已被选择的行的时候,一个事务处理会对数据进行重复读取,那么重复读取就会返回与第一次读取的时候不同的数据。该级别包括级别1的限制,但是会导致冲突而且会增加死锁发生的可能性。
3, 防止虚读取。如果一个事务处理在其他进程在结果集中当中插入或删除行的时候重复读取数据,那么这个重复的读取就会返回与第一次读取不同数量的行。包括级别2的限制,但是会导致冲突而且会增加死锁发生的可能性。
事务隔离级别越高,并发性越低。
对于数据库,一般都有自动处理死锁的能力,默认情况下没隔500毫秒检查一次死锁,并进行相应的解锁处理。
对于死锁情况,可以通过动态配置Sp_configure “print deadlock information” 置为1或者是通过管理工具进行配置,打印出死锁信息进行分析。
一般来讲,死锁是不能避免的,但可以使死锁的发生最小化,主要的手段如下:
1, 优化SQL,优化存储过程,加快执行速度有时候可以在死锁发生之前释放必要的资源。
2, 尽量按照相同的顺序进行数据操作。
3, 避免使用保持锁。
4, 将很长的事务分割成多个小的事务。
5, 确保表中有正确的索引。
6, 在吞吐量系统中,如果使用复制服务器或者复制数据库,就可以大大降低死锁的发生。
7, 采用行级锁可以大大降低死锁的几率。
- Sybase 12.5锁机制的一点理解
- window消息机制的一点理解
- Java类型检测机制的一点理解
- Android 消息机制的一点理解
- Java反射机制的一点理解
- 安装sybase数据库的一点经验
- 分布式锁的一点理解
- 关于过渡机制一点理解
- 对于session与cookie机制,自己的一点理解
- java中的回调机制(自己的一点理解)
- 关于android触摸事件传递机制的一点理解
- zookeeper 中 Watcher 通知机制的一点理解
- C#中线程锁的一点理解
- Ajax的一点理解
- Cygwin的一点理解
- UIWebView 的一点理解
- MEF的一点理解
- QThread的一点理解
- jdbc的THIN方式连接ORACLE
- asp.net中下载文件的实现方法
- .NET Framework 资源微软官方下载
- 找一个好的小投资项目,还算比较满意吧(几个月的创业感想)
- ASP.NET实现MD5加密算法
- Sybase 12.5锁机制的一点理解
- Unix痛恨者手册--巨经典
- XML技术
- 基于.net开发平台项目案例集锦
- 人月神话blog:如何循序渐进向DotNet架构师发展
- dynamic_cast使用方式
- Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- Heroes 天骄里面的人物及能力
- ABAP 中给字段补0 的处理代码