在有些应用场景中.事务开了后或能需要再去调用某个DAL读取表中的数据.但DAL里又是新开的链接,由于外面有事务所以这里读的时候就读不到.这种情况下可以在这个DAL的查询里开一个新的事务级别设为允许脏读即可(数据完整性要求不高时使用.如果要求高慎用!!!)…
直做数据库,最近花了点时间把自己常用的东西封装在一起. DBHelper using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Reflection; namespace DBHelper { public sealed class DB : IDisposable { #region 数据库类型枚举…
今天学习SQLserver 连接以及开窗函数..加油! 1.复习:查询(检索)->筛选列->筛选行:distinct top where 运算符与关键字:比较运算符,逻辑运算符,between...and...,like '%_[^]'->分组与聚合函数 group by ... having ... max,min,avg,sum,count->系统内置函数 类型转换函数:cast(值 as 类型) convert(目标类型,值[,格式]) 字符串函数:len() 日期时间函数:…
计算机程序锁   控制对共享资源进行并发访问 保护数据的完整性和一致性   lock  主要是事务,数据库逻辑内容,事务过程 latch/mutex 内存底层锁:   更新丢失 原因: B的更改还没有提交时,A已经再次修改了数据. 此时A使用原来的元数据作为基础更新后,B的更新便会丢失:   解决办法: 在修改数据上加写锁,当有锁时,A会等B更新提交完,才可以继续在B的基础上继续更新:     事务锁粒度   行锁: innodb ,oracle 页锁:sql server 表锁:Myisam…
工作中处理定时任务分发消息时出现的问题,在查找并解决问题的时候,将相关的问题博客收集整理,在此记录下,以便之后再遇到相同的问题,方便查阅. 问题场景 问题出现的场景: 在消息队列处理消息时,同一事务内先后对同一条数据进行了插入和更新操作; 多台服务器操作同一数据库: 瞬时出现高并发现象: 导致数据更新或新增后数据经常自动回滚:表操作总报 Lock wait timeout exceeded 并长时间无反应 问题剖析 原因分析 MySql Lock wait timeout exceeded 这个…
当出现:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,要解决是一件麻烦的事情:特别是当一个SQL执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束,DBA光从数据库无法着手找出源头是哪个SQL锁住了:有时候看看 show engine innodb status, 并结合 show full processlist 能暂时解决问题,但一直不能精确定位. 在5.5中,inform…
一.查看当前锁定的事务 ,) ,用户机器名称,) ,是否被锁住),blocked) ,数据库名称,),cmd 命令,waittype as 等待类型 ,last_batch 最后批处理时间,open_tran 未提交事务的数量 from master.sys.sysprocesses 二.查看锁定的语句等 select t1.resource_type [资源锁定类型],DB_NAME(resource_database_id) as 数据库名 ,t1.resource_associated_e…
使用Oracle时,发现有表被锁,又不知道是谁(或者哪个程序)锁的,怎么办 ? 两步走: 1.查找出被锁对象的会话ID和序列号 执行如下SQL: -- 查询出被锁对象,并提供 kill 脚本 SELECT S.SID, S.MACHINE, O.OBJECT_NAME, L.ORACLE_USERNAME, L.LOCKED_MODE, S.OSUSESR, 'ALTER SYSTEM KILL SESSION '''|| S.SID || ', '|| S.SERIAL#||''';' AS…
之前的一篇已经介绍了如何配置复制,介绍了发布者.分发者和订阅者以及事务日志运行的简单关系.其中提到了复制代理,我们这篇将详细介绍复制代理,它是什么?在事务复制的步骤中起到了什么作用? 代理和工作 首先我们要知道事务复制不是被SQLServer数据库引擎执行的,而是被其他外部的服务.这些服务中就包括了SQLServer 复制代理. 复制代理主要包括了快照代理.日志读代理和分发代理.双向复制也使用了队列-读代理. 这些代理可以理解为在复制场景链接服务器并且促使数据移动的Windows 程序.在标准的…
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优化 可以通过如下方法来优化查询:…