数据库学习笔记
文章平均质量分 91
这是然少
bugMaker
展开
-
MySQL 中 WHERE 和 HAVING 的对比
MySQL中WHERE和HAVING条件过滤语句的对比原创 2024-03-12 01:13:32 · 383 阅读 · 0 评论 -
MySQL查询语句执行顺序
MySQL中SELECT语句执行顺序及执行原理原创 2024-03-11 18:03:23 · 415 阅读 · 0 评论 -
MySQL笔记: 16. 多版本并发控制
MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在 InnoDB 的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC 没有正式的标准,在不同的 DBMS 中 MVCC 的实现方式可能是不同的,也不是普遍使用的(大家可以参考相关的 DBMS 文档)。原创 2023-04-18 12:01:55 · 415 阅读 · 0 评论 -
MySQL笔记:15. 锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制。原创 2023-04-18 11:49:59 · 145 阅读 · 0 评论 -
MySQL笔记:14. MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?锁机制重做日志回滚日志有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。其实不然。REDO和UNDO都可以视为是一种恢厦操作redo log:是存储引擎层(innodb)生成的日志,记录的是"物理级别"上的页修改操作,比如页号xx、偏移量ywy写入了’zzz’数据。主要为了保证数据的可靠性;提交,由redo log来保证事务的持久化。原创 2023-04-17 22:05:20 · 201 阅读 · 0 评论 -
MySQL笔记:13. 事务基础知识
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。原创 2023-04-17 20:37:47 · 123 阅读 · 0 评论 -
MySQL笔记:12. 数据库其它调优策略
如果MySql的连接数达到 max_connections 时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即 back_log,如果等待连接的数量超过 back_log,将不被授予连接资源,将会报错。如果用的是 MySQL,我们还可以根据不同表的使用需求,选择不同的存储引擎。:表示同时打开的表的个数。高速旋转的是7200转/分钟,这样的速度,一旦访问的用户量上去磁盘的压力就会过大,如果是每天的网站pv (page view)在150w,这样的一般的配置就无法满足这样的需求了。原创 2023-04-17 20:22:17 · 169 阅读 · 0 评论 -
MySQL笔记:11. 数据库的设计规范
在关系型数据库中,关于数据库设计的基本原则、规则就称为范式。规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询。原创 2023-04-17 20:11:10 · 353 阅读 · 0 评论 -
MySQL笔记:10. 索引优化与查询优化
理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的 SELECT、JOIN 和 WHERE 子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列 + 主键包含SELECT 到 FROM 之间查询的列。举例一。原创 2023-04-17 11:38:49 · 352 阅读 · 0 评论 -
MySQL笔记:9. 性能分析工具的使用
定位了查询慢的 SQL 之后,我们就可以使用 EXPLAIN 或 DESCRIBE 工具做针对性的分析查询语句。DESCRIBE 语句的使用方法与 EXPLAIN 语句是一样的,并且分析结果也是一样的。MySQL 中有专门负责优化 SELECT 语句的优化器模块,主要功能: 通过计算分析系统中收集到的统计信息,为客户端请求的 Query 提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)。原创 2023-04-16 16:15:28 · 267 阅读 · 0 评论 -
MySQL笔记:8. 索引的创建与设计原则
① 冗余索引举例:建表语句如下我们知道,通过索引就可以对name列进行快速搜索,再创建一个专门针对name列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引另一种情况,我们可能会对某个列重复建立索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2023-04-16 02:32:25 · 599 阅读 · 0 评论 -
MySQL笔记:7. InnoDB数据存储结构
页a、页b、页c … 页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。原创 2023-04-16 02:23:39 · 363 阅读 · 0 评论 -
MySQL笔记:6. 索引的数据结构
索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质索引是数据结构。可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。原创 2023-04-16 02:12:53 · 819 阅读 · 0 评论