数据库
文章
系统篇——1.查询处理和查询优化
1 查询处理1.1 查询处理的步骤 与编译器进行编译的步骤有点像,先对内容进行解析,优化然后执行。实际上执行查询的步骤就是对SQL语句进行编译并且执行的步骤。 查询分析 对语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号。处理语法错误。 123graph TB词法分析--> 语法分析 查询检查 对合法的查询语句进行语义检查。名称是否存在、视图操作转化为基本表操作、用户权限和完整性检查。将数据库对象的外部名称抓华为内部表示,生成等价的关系代数表达式,使用查询树(语法分析树)来扩展关系代数表达式。 12345graph TB语义分析-->符号名转换符号名转换-->安全性检查安全性检查-->完整性初步检查完整性初步检查-->生成查询树 查询优化 每个查询都会有许多可供选择的执行策略和操作算法,查询优化就是选择一个搞笑执行的查询处理策略。 代数优化指关系代数表达式的优化,按照一定的规则,通过对关系代数表达式进行等价变化,改变代数表达式中操作的次序和组合,使得查询效率更加高效。 物理优化指存取路径和底层操作算法的选择。选择可以使基...
系统篇——2.并发控制
并发控制 参考文献 锁与并发 1 事务的特性概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 ACID 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。 隔离性(Isolation)一个事务所做的修改在最终提交以前,对其它事务是不可见的。 持久性(Durability)一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。系统发生崩溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。 事务的 ACID 特性概念简单,但不是很好理解,主要是因为这几个特性不是一种平级关系:...
z常见问题总结
SQL 语法 SQL 语法 一、基础 二、创建表 三、修改表 四、插入 五、更新 六、删除 七、查询 DISTINCT LIMIT 八、排序 九、过滤 十、通配符 十一、计算字段 十二、函数 汇总 文本处理 日期和时间处理 数值处理 十三、分组 十四、子查询 十五、连接 内连接 自连接 自然连接 外连接 十六、组合查询 十七、视图 十八、存储过程 十九、游标 二十、触发器 二十一、事务管理 二十二、字符集 二十三、权限管理 参考资料 一、基础模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 主键的值不允许修改,也不允许复用(不能将已经删除的主键值赋给新数据行的主键)。 SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。 SQL 支持以下三种注释: 1234...
z面试问题整理
1 mysql 命令与操作2 数据库索引的形式 B+树索引 前缀索引Tire索引字典树索引? 3 数据库的完整性 实体完整性 参照完整性 自定义完整性 4 数据库规范化 1NF 2NF 3NF 4NF 5 并发控制 事务(ACID automatic consistency isolation durability) 并发一致性的问题。脏读、不可重复读、丢失修改 兵法一致性的方案。读写锁:互斥锁、共享锁。三级封锁协议。 6 性能优化 数据库设计优化: 选择合适的存储引擎 设计合理的表结构(符合3NF) 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] 查询语句优化: 通过show status命令了解各种SQL的执行频率。 定位执行效率较低的SQL语句-(重点select,记录慢查询) 通过explain分析低效率的SQL 查询过程优化 从内存中读取数据 减少磁盘写入操作(更大的写缓存) 提高磁盘读取速度









