悲观与乐观锁定
关系数据库系统(RDBMS)在修改(例如,更新或删除)表记录时采用各种锁定策略来强制实施事务 ACID 属性。有时,当两个并发事务无法进行时,可能会发生死锁,因为每个事务都在等待对方释放锁定。在本系列的第 1 部分中,我们知道了什么是关系数据库中的对象锁定、不同类型的锁定和死锁。在今天的后续文章中,我们将比较悲观锁定和乐观锁定的优缺点。
第 1 部分:概述、锁粒度和死锁
最近,我们有一些关于数据库事务的文章,有关强制执行四个 ACID 属性(原子性、一致性、隔离性、持久性)。在今天的文章中,我们将研究关系数据库(RDBMS)用于强制执行 ACID 属性的另一种机制,即对象锁定。具体来说,我们将了解它是什么,它在 RDBMS 事务中扮演什么角色,以及锁定可能导致的一些副作用。虽然数据库对象锁定可能是一个相当技术性和复杂的主题,但我们会以浅白的用语解释它并尽可能简单易明。
早在 2020 年 8 月,SQL Count() 函数的多种用法文章概述了 COUNT 的许多输入参数变体。使用 COUNT() 函数的另一种方法是将其与 GROUP BY 子句结合使用。将 COUNT() 函数与 GROUP BY 结合使用对于根据各种分组分解计数很有用。在今天的文章中,我们将通过使用 Navicat Premium 作为我们的数据库客户端来查询 Sakila 示例数据库,来学习如何按照不同的准则对计数进行分组。
第 4 部分:其他函数
最后一类重要的 SQL Server 函数包括那些处理 NULL、转换和控制流的函数。这些函数绝不是剩菜,是你可能会遇到的最有用的函数之一!
COALESCE
每当你选择值不是强制性的列时,你肯定会遇到 NULL 值。这是有道理的,因为 NULL 值表示没有值或缺少的信息。麻烦的是,如果将 NULL 值包括在计算以及可能对列数据执行的其他操作中,则可能会造成严重破坏。
第 3 部分:日期函数
在 IT 行业工作了 20 年之后,我可以确定日期和时间非常难处理。幸运的是,现代关系数据库(例如 SQL Server)为此提供了许多非常有用的函数。在今天的文章中,我们将探索一些最常用的函数。
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)