数据库系统的核心到底是什么?

MMDBMS主存数据库管理系统简介

数据库管理系统的主要功能有哪些?

说实话,说到DBMS的核心功能,我更喜欢用实际场景来拼凑,而不是干巴巴地列出六点。
当我们公司从 Oracle 切换到 PostgreSQL 时,请耐心等待。

一、数据定义功能。
这件事当时让我非常头疼。
我们的技术团队花了整整两周的时间,将旧系统的三层架构映射到新数据库的外部模式、概念模式和内部模式。
外部模式是业务人员的报表结构,概念模式是整个公司的计算机逻辑,内部模式是底层文件的定位方式。
最麻烦的是完整性约束,比如客户表上的外键约束。
在Oracle中输入“ON DELETE CASCADE”就像一个笑话,但是当你在PostgreSQL中输入它时,你发现必须指定索引才能运行得快。
当时有同事抱怨:“为什么这个DDL比写业务逻辑还要复杂?”
第二,数据操作功能。
这绝对是DBMS的灵魂。
我们的销售部门每天都使用SQL来检索各种报表。
有一次,报表经理突然想添加一个“按城市分组的复杂数据透视图”。
SQL 编写了数百行,它的运行就像慢动作重播一样。
后来我们的DBA调整了一个临时索引来解决这个问题。
这体现了DML的强大之处,但如果使用不当,它很容易杀死数据库。

第三,运行管理功能。
这绝对是DBA的噩梦。
我记得有一次凌晨三点系统突然崩溃了。
检查日志后发现两个事务同时更改了相同的数据,锁定了一百多个连接。
把加锁机制改为乐观锁后,问题就解决了,但是当时技术总监骂了我,看得我脸红:“我叫你用悲观锁,你不听!”当时,我们只捕获了前三个 ACID 函数。
在一次持久性事件(P)之后,我们意识到备份的重要性。

第四,数据组织、存储和管理。
这直接影响数据库的性能。
我们测试部门有一个老哥特,他痴迷于索引优化。
有一次他把某张表的B树索引改成了哈希索引,但是查询速度慢了三倍。
最后发现数据太稀疏,B树索引效率更高。
所以这个东西要看数据的特点,不可能一刀切。
MySQL的InnoDB引擎当时非常流行,但如果参数调整不正确很容易出现问题。

五、数据库的保护功能。
我们在安全方面遇到了困难。
有一次实习生设置权限错误,导致整个财务表被删除。
从现在开始,我们决定所有表都必须设置最小权限。
当时还存在诚信约束的问题。
导入脚本写入了错误的外键映射,导致数万条数据损坏。
所以,触发器虽然麻烦,但也不能省略。

六、数据库维护功能。
这项工作看似简单,其实最需要经验。
我们有一名操作和维护人员。
当他定期转储数据时,他发现备份文件比实际数据大5 0%。
我们发现数据类型转换有问题。
还有一次,他没有先停止应用程序就重建了索引,结果系统卡住了两个小时。
现在我们每天使用MySQL的SHOW STATUS命令来检查系统状态及早发现并预防问题。

说实话,DBMS用得好的话可以省去很多麻烦,但用得不好的话真的会让人怀疑人生。
每个公司的具体情况不同,没有一刀切的解决方案,需要根据实际场景进行调整。

Transact-SQL查询

2 02 3 年,在公司培训时,我了解到数据库查询实际上是一项技术任务。
在我上次参加的培训中,老师向我详细地解释了一切。
SQL Server的查询窗口很方便,但是我之前用的查询分析器感觉有点落后。
打开查询窗口,连接到服务器,创建新查询并开始写入。
T-SQL 语句是一种非常标准的结构化查询语言。

刚从SQL Server 2 01 6 培训回来的朋友说聚合函数特别有用,可以计算记录数、总和、最大值、最小值和平均值。
嵌套查询听起来相当高级,可以多层嵌套,但我还没有实践过。
多表连接查询将多个表一起查询,这在关系数据库中非常重要。

记得有一次查询销售记录,使用WHERE子句,条件是销售额超过5 万。
原来销售数据这么丰富,而且朋友还告诉我可以通过比较运算符来过滤数据。

内连接查询仅显示匹配的数据行。
我尝试了一下,非常方便。
但有时连接条件不匹配,需要仔细检查字段和值。
算了,今天就写到这里,交给你们吧。