粒度

软件测试的粒度

一世执手 提交于 2019-11-27 01:27:54
软件测试的粒度分为:单元测试、软件集成测试、系统集成测试、系统测试。 单元测试:可以理解为测试函数。 软件集成测试:软件包含多个模块,软件集成测试就是 模块集成软件的过程中是否有错误,可以理解为测试函数的调用。 系统集成测试:系统包含多个子系统,系统集成测试就是 子系统集成系统的过程中是否有错误,可以理解为测试子系统之间的调用。 系统测试:测试整个系统。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/02/10/2345713.html 来源: https://blog.csdn.net/weixin_30509393/article/details/99234383

mysql 并发控制

我的梦境 提交于 2019-11-27 01:09:12
1、多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题。 2、mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁。也就是说,读锁是共享的,写锁是排他的。 3、锁粒度,为了更好的并发控制,锁的粒度应该尽可能小,也就是只锁定修改的数据。但是,锁本身也有一定的开销,包括获取锁,检查锁是否释放,释放锁,这些操作也耗费一定的资源。锁的粒度小,在并发控制的时候,也就意味着需要更多的锁,锁的总开销也就越大。 4、根据锁的粒度,分为表锁和行锁,mysql本身使用表锁来实现不同的目的,比如alter table,这个时候会忽略存储引擎的锁机制。存储引擎支持表锁和行锁,不同存储引擎的实现不同。 5、特别注意:mysql支持不同的事务隔离级别,隔离级别越高,锁的粒度越大,也就是锁的内容越多。比如: 考虑下面的情况,A,B客户端的事务隔离级别都是read-uncommitted, 锁的粒度是行锁。 步骤一、A执行start transaction,修改一条记录 步骤二、B执行start transaction,修改另一条记录 二者是不阻塞的,证明read-uncommitted 是行锁。同理,可以证明read-committed是行锁,repeatable-read和serializable是表锁。 注意:加什么锁,锁多大范围,和很多因素有关,包括是否有索引