数据库系统由哪几个部分组成

说实话,当我第一次接触这个数据库系统时,它的四个部分让我非常头疼。
但说实话,分享它还是很酷的。

我们先来说说数据库。
当我第一次理解这个概念时,我正在帮助公司分析年报。
如果您将这些分散的销售数据和客户记录直接转储到 Excel 中,那么它们将会被卡住。
后来IT把数据整理到MySQL里,突然就快了。
这些人将销售流程、会员信息和产品目录分类,然后按月份和地区生成视图。
有趣的是,实际上数据冗余较少。
过去,客户会进行多次购买,系统必须重复输入一堆信息。
现在,一旦绑定了连接表,查询的效率就提高了一倍。
不过话虽如此,我当时并没有考虑可扩展性。
例如,如果突然增加一个非洲市场,数据结构是否需要再次改变?我自己没有这样做过。

硬件方面,印象非常深刻的是2 01 8 年公司搬到新机房,当时DBA老王每天都在讲“磁盘IOPS”和“内存缓存”。
他解释说,价值 3 000 万美元的数据库服务器机器有 1 6 个 NVMe SSD,只是为了处理峰值查询。
说白了,硬件配置直接决定了系统能运行多快。
无论你的数据库有多好,硬盘驱动器的速度都会变慢,用户仍然会等待。
我记得当时的规格是每秒可以处理 2 000+ 查询请求,但我建议您查看最新的技术规格。

在软件领域,我担任过一段时间的DBA助理。
每天早上的早会中,DBA 都会问:“今天备份工作了吗?”以及“索引重建进展到什么程度了?”数据库管理系统(DBMS)最终解决“如何存储数据”和“如何查找数据”两个基本问题。
当时我们使用的是 Oracle,现在想起来,数据定义和数据操作命令集相当复杂。
但它确实非常有效。
例如,编写 PL/SQL 存储过程来更新数组中的数千条记录比编写脚本并运行 SQL 快得多。

说到人员,我特别记得一个案例。
某个系统崩溃了,最后发现是邻近部门的应用程序员在测试用例时不小心执行了一条删除整个表的SQL语句。
这件事给我留下了很深的印象,为什么呢?因为人员方面非常重要。
系统分析师必须了解业务,设计人员必须了解技术,最终用户不能随意插入特殊字符,DBA必须时刻关注备份和权限。
如果这四种人都配合不好,那么再好的制度也是没有用的。

参考资料中提到的数据库系统也相当有趣。
MySQL现在无处不在,我镇的连锁超市的管理系统出生使用它。
SQL Server在国内企业中也很常见。
我们在构建 ERP 系统时选择了它,它与 Visual Studio 配合得很好。
我听说Oracle特别适合金融行业。
我们行业中的一些系统运行在 Oracle 上。
但说实话,选择哪个数据库取决于你的具体需求。
不要盲目跟风。

mysql什么是数据库模式

数据库模式是数据库的结构图。
用于定义数据库中对象的组织,例如表、字段、数据类型、索引、约束、视图和存储过程。
不包含实际数据,但描述数据如何组织和关联。

基本定义 数据库模式是数据库设计的核心部分。
定义数据的逻辑结构。
它描述数据库中的表、表字段、数据类型、索引、约束、视图、存储过程和其他对象。
这相当于数据的“计划”。

例如,模式将指示用户表包含哪些字段(例如用户名、密码、电子邮件地址)。
每个字段的数据类型(例如,VARCHAR、INT)。
以及字段之间的限制(例如,唯一性、非空性)。

主要部件 表:定义表名称、字段名称和数据类型(例如 INT、VARCHAR、DATETIME)。
例如,“订单表”可能包含订单ID、用户ID、订单金额等字段。

PrimaryKey&ForeignKey:主键唯一标识表中的记录(例如用户表的用户ID)。
外键用于建立表之间的关系(例如,订单表中的用户 ID 与用户表的主键相关联)。

索引:通过优化数据存储结构来提高查询效率。
例如,对经常使用的查询字段(例如用户名)建立索引可以加快搜索速度。

视图:根据 SQL 查询结果创建的虚拟表,以简化复杂查询。
例如,创建一个“活动用户视图”,其中仅包含最近登录用户的数据。

触发器和存储过程。
触发器是自动运行的预定义逻辑(例如,插入数据后自动更新统计信息)。
存储过程是经过封装的、可重用的数据库操作代码数据。

约束:NOTNULL(字段不为空)、UNIQUE(唯一值)、CHECK(满足条件)等规则,保证数据完整性。
例如,规定用户的电子邮件地址必须是唯一的。

模式和数据库之间的关系 在 MySQL 中,模式本质上等同于数据库。
执行 CREATEDATABASEmydb;将创建一个名为 mydb 的模式。
该架构包含所有随后定义的表、视图和其他对象。

可以使用以下命令控制模式: 查看所有模式:SHOWDATABASES; 进入指定模式:USEmydb; 查看表结构:DESCRIBEtable_name; (显示字段名称、类型、限制) 查看完整的建表语句:SHOWCREATABLEtable_name; (返回创建表的 SQL 语句,包括所有架构定义)。

模板的作用 数据库模式是数据库设计的基础,定义数据的组织和关联方式。
例如,在设计电子商务数据库时,需要使用模式定义用户表、产品表、订单表以及它们之间的关系(例如订单表通过外键关联用户表和产品表)。

智能模式设计可以提高数据存储效率、查询性能和数据一致性。
避免冗余和冲突。

总结:数据库模式是MySQL中描述数据库结构的模式。
涵盖表、字段和约束等对象的组织。
它通过定义数据的逻辑结构来确保数据完整性。
并利用索引、视图等优化查询效率。
在 MySQL 中,模式与数据库同义。
可以使用 SQL 命令创建、查看和管理。

MySQL三种重要日志

Binlog...这个很重要...它记录逻辑变化...比如增删改查...
主要用在主从复制...还有数据恢复...对...
开发要注意这个...很有必要...
怎么写binlog...先写在binlogcache...这是内存...
然后事务
不提交到binlogca文件...然后不发送到binlogca文件...写到filesystem pagecache...不是直接写到硬盘磁盘...
硬盘呢?怎么写...操作系统管理...使用fsync...
MySQL有配置...sync_binlog...
sync_binlog=0...每次提交...都写入pagecache...不是fsync...
sync_binlog=1 ...每次...fsync...
sync_binlog=N...只写一次...N次...binlog永远不会丢失...
sync_bin log=N...如果重启...Binlog N管理交易会丢失...
Binglog有三种格式...STATMENT、ROW、MIX...
STATMENT...记录原始SQL...
缺点...如果主备索引不同...ROW结果可能不同...
记录的数据...
改变...
缺点...占用空间...
例如DELETE...STATMENT只是一条SQL...
ROW要记录所有改变的数据...数据删除...
MIX...混合...
对可能导致不一致的命令使用ROW...
使用我的STATEMENT操作...并为其他人更新磁盘...要更新的记录...
IO成本高...搜索成本也高...
加快...写入redolog...更新内存...
INNODB引擎...仅在时机正确时...将操作写入磁盘...
redolog和binlog...有什么区别...
崩溃安全redolog...为什么不符合逻辑...
binlog是逻辑...
逻辑...日志...
redolog记录的是物理变化...比如哪个页、哪些数据...
所以恢复的时候...就根据redolog回滚...
不要怕崩溃...因为写的是物理...
binlog记录的是SQL...
如果MySQL直接崩溃...我还没写过binlog...
当知道哪个SQL可以恢复...
只能是恢复...
基于重做日志...但数据可能不一致...
所以binlog不是崩溃安全的...
明白了...重做日志是物理的...binlog是逻辑的...
物理是崩溃安全的...逻辑不是...