“我就是一个送快递的”,“我就是一个送外卖的”,“我就是一个做软件的”
这三句话透出同一种语气,对自己职业的不看好,对自己职业的不尊重,而且大家看经常说这三种话的人在各自的行业上不会有很大的造诣。
要想在各自的职业上做出色,就要认真起来。
学校以前的系统,包括考试的、老师信息的、学生选课的、各个系统都是分离的,难以构成整体的,信息与信息都是孤立的,信息和信息之间都是很难建立联系的,所以学校需要换系统,而我呢,做为新系统中的一个小小小小的参与者,不敢说是学到了什么,我了解到了 负责任、决心 以及数据库默认锁(共享锁、排他锁)、测试成本高的问题\
Sql Server Profier工具、读写分离的问题。
数据库默认锁
我们做的评教系统上个周末由于好几百人同时评教,于是乎,系统瘫痪,提交按钮提交不上去,最后是师哥把问题解决的,原因是多个用户同时操作数据库,使资源不能得到及时的释放,进程一直被占用,导致服务器与客户端响应时间过长。当然寻找错误的过程也是很漫长的。
1.HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。
2.NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。
3.PAGLOCK:指定添加页锁(否则通常可能添加表锁)。
4.READCOMMITTED用与运行在提交读隔离级别的事务相同的锁语义执行扫描。默认情况下,SQL Server 2000 在此隔离级别上操作。。
5.READPAST: 跳过已经加锁的数据行,这个选项将使事务读取数据时跳过那些已经被其他事务锁定的数据行,而不是阻塞直到其他事务释放锁,READPAST仅仅应用于READ COMMITTED隔离性级别下事务操作中的SELECT语句操作。
6.READUNCOMMITTED:等同于NOLOCK。
7.REPEATABLEREAD:设置事务为可重复读隔离性级别。
8.ROWLOCK:使用行级锁,而不使用粒度更粗的页级锁和表级锁。
9.SERIALIZABLE:用与运行在可串行读隔离级别的事务相同的锁语义执行扫描。等同于 HOLDLOCK。10. TABLOCK:指定使用表级锁,而不是使用行级或页面级的锁,SQL Server在该语句执行完后释放这个锁,而如果同时指定了HOLDLOCK,该锁一直保持到这个事务结束。
11. TABLOCKX:指定在表上使用排它锁,这个锁可以阻止其他事务读或更新这个表的数据,直到这个语句或整个事务结束。
12. UPDLOCK :指定在读表中数据时设置更新 锁(update lock)而不是设置共享锁,该锁一直保持到这个语句或整个事务结束,使用UPDLOCK的作用是允许用户先读取数据(而且不阻塞其他用户读数据),并且保证在后来再更新数据时,这一段时间内这些数据没有被其他用户修改。
上面是网上找的数据库锁的相关知识 http://tech.ccidnet.com/art/1106/20080624/1485141_1.html测试成本高的问题
用最少的人做最恰当的测试。比如说可以借助一些测试软件啊像load runner 、QTP啊都可以。
我还接触了导数据这个高富帅的活动,师哥说“数据是系统的灵魂”,我就是操纵灵魂的,导数据一定要保证每一条都正确,不能马马虎虎,做人要认真。