数据库零散知识

1、 死锁四个条件:

Mutual Exclusion 互斥条件(资源不能共享,只能由一个进程享用);

Hold and Wait 持有并等待(进程已经拥有者某个资源,在等待另外一个资源);

No preemptive 非抢占式资源(已经分配的资源不能从相应的进程中抢夺出来);

Circuit wait 系统中的若干进程组成环路(环路中每个进程都在等待相邻进程正占用的资源)。

 

2、锁的分类:

两种类型的锁: locks
共享的(S) 锁允许一个事务去读一行tuple。
独占的锁(X) 允许一个事务更新或删除一行。

 

 

表锁定,页锁定,行锁定? 

看看mysql 使用的是什么存储引擎,以区分对锁定的支持:SHOW TABLE STATUS FROM database_name 。ok ,是InnoDB ,它实现标准行级锁定。

锁的有效期决定于transaction 或者for update 这类语句在何时结束或者roll back 。
如果有select * from table for update 此类语句,那么就是表锁定。
如果有select * from table where id between 1 and 10000  for update 此类语句,那么就是页级锁定。
如果有select * from table where id= 1 for update 此类语句,那么就是行级锁定。

 

3、事务Transaction

四个基本条件ACID

原子性Atomicity, 原子性属性用于标识事务是否完全地完成,一个事务的任何更新要在系统上完全完成,如果由于某种原因出错,事务不能完成它的全部任务,系统将返回到事务开始前的状态。

一致性Consistency, 当许多用户同时使用和修改同样的数据时,事务必须保持其数据的完整性和一致性。

隔离性Isolation, 隔离性问题引发了事务的可串行化问题。隔离性不仅仅保证多个事务不能同时修改相同数据,而且能够保证事务操作产生的变化直到变化被提交或终止时才能对另一个事务可见,并发的事务彼此之间毫无影响。(DataBase书上写道:在一个有多个事务并发执行的数据库系统中,如果对共享数据的更新不加以控制,事务就可能看到由别的事务的更新引起的中间状态的不一致,这种情况会导致对数据库中存储的数据的错误更新。所以数据库系统必须提供隔离机制以保证事务不受其他并发执行的事务影响,这个特性叫隔离性。)

持久性Durability, 持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。许开发者认为不管系统以后发生了什么变化,完成的事务是系统永久的部分。(DataBase书上写到:一旦事务成功执行,其影响必须保存在数据库中。一个系统故障不应该导致数据库忽略完成的事务,这个特性叫做持久性)

 

 

DBMS主要包括四部分:

recovery_management 负责 automicity;

transaction_designer/DBS application programmer   负责  consistency;

concurrency_control   负责  isolation;

recovery_management  负责  durablity.

 

<think>嗯,用户要求重复讲解数据库基础知识,但这次特别强调要参考站内引用[1]的结构。用户可能是个刚入门的学习者,需要系统性的知识框架,而不是零散知识点。 注意到引用[1]的目录结构很清晰:从定义、必要性、分类到具体使用。我决定沿用这个框架,但补充更多实用细节,比如安装后的操作步骤和存储引擎对比,这样能帮助用户真正动手实践。 用户之前接触过Linux和MySQL的关联知识,所以这次会强化Linux环境下的操作示例。比如mysql_secure_installation这样的安全设置,很多教程会忽略这点,但实际部署时很重要。 考虑到用户两次询问基础知识,可能在为后续的高阶主题打基础。最后生成的问题特意包含事务隔离级别和主从复制,既是延续之前的提问模式,也是为可能的进阶学习铺路。 数学公式方面,虽然数据库基础知识涉及数学不多,但在解释ACID特性时,还是用$P(A\cap B)$这样的概率表达式更准确,要确保正确包裹在美元符号里。</think>以下是数据库基础知识的系统梳理,结合Linux环境下的MySQL实践: ### 一、数据库核心概念 1. **数据库定义** 数据库是结构化数据的集合,通过**数据库管理系统(DBMS)** 进行管理,如MySQL。DBMS提供: - 数据持久化存储 - 高效的数据检索机制 - 并发控制和事务管理[^1] 2. **为什么需要数据库** - 解决文件存储的三大缺陷: ```mermaid graph LR A[文件存储问题] --> B[数据冗余] A --> C[访问效率低] A --> D[并发控制难] ``` - 提供ACID特性保证数据一致性: $$P(A\cap B) = P(A) \cdot P(B) \quad \text{(事务独立性概率模型)}$$ --- ### 二、数据库分类 | 类型 | 特点 | 代表产品 | |--------------|-----------------------|-------------------| | 关系型数据库 | 二维表结构,SQL操作 | MySQL, PostgreSQL| | 非关系型数据库| 键值对/文档存储 | MongoDB, Redis | | 时序数据库 | 时间序列数据优化 | InfluxDB | --- ### 三、MySQL基础操作(Linux环境) 1. **安装与启动** ```bash # Ubuntu/Debian sudo apt update && sudo apt install mysql-server sudo systemctl start mysql # 验证安装 mysql --version ``` 2. **连接与基本操作** ```sql -- 连接数据库(需输入密码) mysql -u root -p -- 创建数据库 CREATE DATABASE school; USE school; -- 建表示例(含主键自增) CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, score DECIMAL(5,2) CHECK (score >= 0) ); ``` 3. **数据操作CRUD** ```sql -- 插入数据 INSERT INTO students (name, score) VALUES ('李雷', 92.5); -- 查询数据(条件筛选) SELECT * FROM students WHERE score > 90; -- 更新数据 UPDATE students SET score = 95 WHERE name = '李雷'; -- 删除数据 DELETE FROM students WHERE id = 101; ``` --- ### 四、MySQL体系结构 ```mermaid graph TD A[客户端] -->|SQL命令| B[连接池] B --> C[查询解析器] C --> D[优化器] D --> E[存储引擎<br>InnoDB/MyISAM] E --> F[磁盘存储] ``` 1. **存储引擎对比** | 特性 | InnoDB | MyISAM | |--------------|----------------------|-----------------| | 事务支持 | ✅ 支持ACID | ❌ 不支持 | | 锁机制 | 行级锁 | 表级锁 | | 崩溃恢复 | 支持 | 不支持 | | 适用场景 | 高并发写入 | 只读查询 | --- ### 五、SQL语句分类 | 类型 | 命令示例 | 作用 | |--------------|---------------------------|--------------------------| | DDL | `CREATE TABLE`, `ALTER` | 定义数据结构 | | DML | `INSERT`, `UPDATE` | 数据操作 | | DQL | `SELECT` | 数据查询 | | DCL | `GRANT`, `REVOKE` | 权限控制 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值