
数据库mysql
文章平均质量分 91
数据库
mocas_wang
摸鱼专家
展开
-
MySQL索引在关联查询中的作用
如果是inner join的话,一边有索引就可以了如果是left join,主表可以不用索引,但另外张就要索引EXPLAIN语句分析出来的第一行的表即是驱动表在以小表驱动大表的情况下,再给大表建立索引会大大提高执行速度left join 原理是 左连接情况下左表全有,因此在右边创建索引,得到比较理想的效果然后inner join是因为mysql自带得优化器能自动识别怎么去”找“更省时间结论:left join:右边创建索引;right join:左表创建索引。原创 2022-10-19 22:49:00 · 2386 阅读 · 1 评论 -
最全的select加锁分析(Mysql)
大家在面试中有没遇到面试官问你下面六句Sql的区别呢select * from table where id = ?select * from table where id < ?select * from table where id = ? lock in share modeselect * from table where id < ? lock in share modeselect * from table where id = ? for updateselect转载 2021-07-05 22:22:41 · 454 阅读 · 0 评论 -
MySQL主从复制与读写分离原理
目录1 主从复制与读写分离的意义1.1 什么是主从复制1.2 主从数据库的好处和缺点2 主从复制2.1 主从复制的形式2.2 主从复制的原理2.3 主从复制的模式异步模式半同步模式 --5.5开始支持全同步模式3 主从复制读写分离过程3.1 主从数据库实现同步(主从复制)3.2 主从读写分离4 主从复制分析1 主从复制与读写分离的意义企业中的业务通常数据量都比较大,而单台数据库在数据存储、安全性和高并发方面都无法满足实际的需求,所以需要配置多台原创 2020-12-23 16:54:27 · 711 阅读 · 2 评论 -
MySQL 学习总结 之 缓冲池(Buffer Pool)
目录1 缓冲池(Buffer Pool)的地位2 缓冲池 的内容结构3 缓存过程3.1 Buffer Pool 的初始化3.2 Free 链表记录空闲缓存页3.3 Flush 链表记录脏缓存页3.4 LRU 链表记录缓存页的命中率4 LRU原理5 总结6 常见问题1 缓冲池(Buffer Pool)的地位应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机原创 2020-11-29 11:34:19 · 1717 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
目录1 MySQL索引原理1.1 索引目的1.2 索引原理1.3 索引的数据结构2 慢查询优化2.1 建索引的几大原则2.2 慢查询优化的基本步骤(1)数据库中设置SQL慢查询(2)分析慢查询日志 2.3 常见的慢查询优化(1)索引没起作用的情况(2)优化数据库结构(3)分解关联查询(4)优化LIMIT分页3 SQL语句优化1 MySQL索引原理1.1 索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“mys...原创 2020-11-12 20:28:21 · 641 阅读 · 0 评论 -
深入理解数据库索引采用B树和B+树的原因
目录1 数据库索引2 树2.1 二叉查找树2.2 平衡二叉树2.3 B 树2.4 B+ 树3 聚集索引 VS 非聚集索引3.1 利用聚集索引查找数据3.2 利用非聚集索引查找数据1 数据库索引索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 (1)数据库文件存储的方式 数据库文件存储都是以磁盘文件存储在系统中的,这也是数据库能持久化存储数据的原因。(2)从数据库读取数据的原理 ...原创 2020-11-12 19:59:39 · 775 阅读 · 0 评论 -
数据库存储过程讲解与实例
目录1 存储过程简介2 存储过程使用2.1创建存储过程2.2 in,out以及inout1 存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是...原创 2020-10-17 11:34:28 · 19857 阅读 · 0 评论 -
数据库触发器学习
1 数据库触发器概述1.1 概念SQL触发器,是一种特殊类型的存储过程,不由用户直接调用。它在指定的表中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、UPDATE 或 DELETE 语句。他可以查询其它表,并可以包含复杂的Transact-SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动回滚。常常用于强制业务规则和数据完整性。 DML( 数据操纵语言 Data Manipulation Langua转载 2020-10-17 10:53:29 · 5882 阅读 · 1 评论 -
手把手测试数据库外连接,内连接
目录1数据库设计2 外连接(out join)3 内连接(inner join)4 全连接(Full join)5交叉连接1数据库设计表名A表A数据表名B表B的数据2 外连接(out join)在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。 如果A表的数据在B表中没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。外连接分为外左连接(left outer join)和外右连接...原创 2020-09-05 20:46:53 · 678 阅读 · 0 评论 -
数据库事务的概念,特性及其实现原理
目录1.事务介绍1.1 为什么需要数据库事务1.2 什么是数据库事务1.3 事务如何解决问题1.4 事务的ACID特性以及实现原理概述2.并发异常与并发控制技术2.1 常见的并发异常2.2 事务的隔离级别2.3 事务隔离性的实现——常见的并发控制技术2.3.1 基于封锁的并发控制2.3.2 基于时间戳的并发控制2.3.3 基于有效性检查的并发控制2.3.4 基于快照隔离的并发控制2.3.5 关于并发控制技术的总结3. 故障与故障恢复技术3.1原创 2020-08-29 16:28:17 · 1601 阅读 · 0 评论 -
MYSQL数据库日志
目录1.日志介绍2. 日志作用3. 日志分类Mysql数据库日志4 .日志讲解一、innodb引擎中的redo/undo log是什么二、什么是binlog三、binlog的三种模式5. 日志原理事务的原语操作延迟的数据库修改redo立即的数据库修改undo + redo缓冲区管理日志缓冲数据库缓冲操作系统在缓冲区管理的作用检查点静态检查点动态检查点对比1.日志介绍数据库都具有事务日志,用于记录所有事务以及每个事务对数据原创 2020-08-29 11:11:20 · 3935 阅读 · 0 评论 -
数据库三范式,存储引擎知识点理解
目录1.三范式1.第一范式(确保每列保持原子性)2.第二范式(确保表中的每列都和主键相关)3.第三范式(确保每列都和主键列直接相关,而不是间接相关)2 存储引擎2.1存储引擎的特性2.2 存储引擎特点2.3 存储引擎选择1.三范式设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换.原创 2020-08-16 15:07:04 · 676 阅读 · 0 评论 -
数据库之索引
目录1.简介2 索引类型2.1、从数据结构角度2.2、从物理存储角度2.3、从逻辑角度3 索引创建方式4 索引的优化5 索引结构6 索引总结1.简介数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。索引的重要性:当你的数原创 2020-08-16 11:14:59 · 2375 阅读 · 0 评论 -
Class.forName()用法详解
目录1.什么是class对象2.获得class对象的三种方法3.class的作用和方法4 Class.forName()用法4.1 什么时候用Class.forName()?4.2 newInstance和new关键字的区别5 应用问题解析情景一:载入数据库驱动的时候情景二:使用AIDL与电话管理Servic进行通信1.什么是class对象 类是程序的一部分,每个类都有一个class对象。换言之,每当编写并且编译了一个新类,就会产生一个class对象(更...原创 2020-07-18 15:12:39 · 66813 阅读 · 12 评论 -
QueryRunner的用法解析
QueryRunner概述使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作--DBUtils。DbUtils(org.apache.commons.dbutils.DbUtils)是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。DbUtils类主要负责装载驱动、关闭连接的常规工作。QreryRunner类(org.apache.commons.dbutils.Query...原创 2020-05-29 18:23:23 · 3727 阅读 · 0 评论 -
JDBC详解
目录1.JDBC简介二、JDBC的编码步骤三JDBC代码实现3.1 注册驱动,获取连接,完成查询操作3.2 创建statement或者preparedstatement接口,来执行SQL语句:使用statement接口:使用preparedstatement接口:四 JDBC中常用接口或类详解Statement类讲解:ResultSet类讲解:数据库的URL:五 事务事务概述事务的特性事务的隔离级别:六 工具类配置1.JDBC简介JD.原创 2020-05-19 17:28:40 · 622 阅读 · 0 评论 -
SQL基本使用
目录将数据放入自己的mysql数据库中做练习用1.操作登录使用1.1 登陆Mysql数据库1.2展示(查询)所有数据库1.3进入数据库1.4创建数据库2 DDL对表结构修改3 DCL1 查看用户权限2 被授权的用户3 授予权限4 撤销权限4 DQL:1列(字段)控制2 条件控制:条件查询模糊查询3 排序:order by 排序的关键字4 聚合函数:聚合函数用来做某列的纵向运算5 分组查询6 limit字句SQL...原创 2020-05-14 18:52:12 · 1706 阅读 · 0 评论