分类 SQL 下的文章

乐观锁与悲观锁各自适用场景

机制

  1. 乐观锁是一种思想,具体实现是,表中有一个版本字段,第一次读的时候,获取到这个字段。处理完业务逻辑开始更新的时候,需要再次查看该字段的值是否和第一次的一样。如果一样更新,反之拒绝。之所以叫乐观,因为这个模式没有从数据库加锁。
  2. 悲观锁是数据库层面加锁,都会阻塞去等待锁。乐观锁优点程序实现,不会存在死锁等问题。他的适用场景也相对乐观。阻止不了除了程序之外的数据库操作。悲观锁是数据库实现,他阻止数据库写操作。再来说更新数据丢失,所有的读锁都是为了保持数据一致性。乐观锁如果有人在你之前更新了,你的更新应当是被拒绝的,可以让用户从新操作。悲观锁则会等待前一个更新完成。这也是区别。具体业务具体分析

    阅读剩余部分

数据库优化的6种方式

数据库的优化有很多方式,下面介绍一下数据库的优化方式。

1、选取最适用的字段属性。MySQL可以支持大数据量的存取,但是数据库中的表越小,在上面执行的查询就越快。所以可以将表中的字段宽度设置的尽可能小。

2、使用连接来代替子查询(Sub-Queries)。可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。

3、使用联合(UNION)来代替手动创建的临时表。MySQL可以把需要使用临时表的两条或者更多的select查询合并到一个查询中。

阅读剩余部分

SQL Server获取某个日期范围的日期/月份数据

很多时候做图形报表,需要得到某一个日期范围内的每日或每月的数据走势。SQL的写法通常都要先把这个日期范围内的每日或每月的列表造出来。

怎么造?要用到系统的MASTER..spt_values表,这个表有很多妙用,目前我只熟悉他的number字段。

select number from master..spt_values where type = 'p'

获取的是从0到2047,共2048个数字。

阅读剩余部分