
mysql
文章平均质量分 71
皮皮攻城狮
写博客的目的是记录生活的点点滴滴,与大家共享知识,记录解决每一个小小的问题。
方便我自己,也方便大家!这是初心!
展开
-
如何查询慢 SQL 产生的原因
(1)分析 SQL 执行计划(explain extended),思考可能的优化点,是否命中索引等。(2)没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)。(5)是否查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)。(8)I/O 吞吐量小,形成了瓶颈效应。(6)是否返回了不必要的行和列。原创 2024-01-13 11:24:50 · 861 阅读 · 0 评论 -
undo log 具体怎么回滚事务 ?
(1)对于 insert 类型的 sql,会在 undo log 中记录下方才你 insert 进来的数据的 ID,当你想roll back 时,根据 ID 完成精准的删除。(2)对于 delete 类型的 sql,会在 undo log 中记录方才你删除的数据,当你回滚时会将删除前的数据 insert 进去。(3)对于 update 类型的 sql,会在 undo log 中记录下修改前的数据,回滚时只需要反向。(4)对于 select 类型的 sql,别费心了,select 不需要回滚。原创 2024-01-13 11:23:53 · 620 阅读 · 0 评论 -
MySQL 索引底层结构为什么使用 B+树
B 树能够在非叶节子点中存储数据,但是这也导致在查询连续数据时可能会带来更多的随机 I/O,而 B+树的所有叶节点可以通过指针相互连接,能够减少顺序遍历时产生的额外随机 I/O;(2)第一,B 树一个节点里存的是数据,而 B+树存储的是索引(地址),所以 B 树里一个节点存不了很多个数据,但是 B+树一个节点能存很多索引,B+树叶子节点存所有的数据。(3)第二,B+树的叶子节点是数据阶段用了一个链表串联起来,便于范围查找。原创 2024-01-13 11:23:01 · 453 阅读 · 0 评论 -
MySQL 为什么 InnoDB 是默认引擎
聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚簇索引,因为一个表的物理顺序只有一种情况,所以,对应的聚簇索引只能有一个。聚簇索引的叶子节点就是数据节点,既存储索引值,又在叶子节点存储行数据。原创 2024-01-13 11:22:22 · 871 阅读 · 0 评论 -
MySQL 的索引分类
只有在 MyISAM 引擎上才能使用,只能在 CHAR,VARCHAR,TEXT 类型字段上使用全文索引,介绍了要求,说说什么是全文索引,就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行,比如有"你是个靓仔,靓女 …多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。空间索引是对空间数据类型的字段建立的索引,MySQL 中的空间数据类型有四种,:索引列中的值必须是唯一的,但是允许为空值,原创 2023-12-16 10:40:46 · 627 阅读 · 0 评论 -
undo log 具体怎么回滚事务,如何查询慢 SQL 产生的原因
举个例子:原创 2023-12-04 11:42:43 · 1035 阅读 · 1 评论 -
MySQL索引下推
说到索引下推,应该会有不少人对它很陌生的,那么什么是索引下推,今天我们就来谈谈它到底是什么样?原创 2023-12-03 10:27:33 · 548 阅读 · 1 评论 -
MySQL索引有哪些优缺点
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。原创 2023-12-01 20:39:09 · 903 阅读 · 0 评论 -
MySQL死锁,死锁产生的4个必要条件,死锁案例, 如何避免死锁
死锁是指2+的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。原创 2023-11-27 14:48:18 · 2176 阅读 · 1 评论 -
MySQL性能优化,SQL调优,SQL调优的手段
MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。union和union all的差异主要是前者需要将结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源消耗及延迟。or两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。原创 2023-11-26 08:50:30 · 911 阅读 · 0 评论 -
聚簇索引和非聚簇索引的区别;什么是回表
聚簇索引就是将数据(一行一行的数据)跟索引结构放到一块,InnoDB存储引擎使用的就是聚簇索引;注意点:1、InnoDB使用的是聚簇索引(聚簇索引默认使用主键作为其索引),将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。2、若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。原创 2023-11-26 08:41:47 · 435 阅读 · 1 评论 -
MySQL死锁了怎么办(死锁的产生及解决方案),死锁的案例,死锁的排查,死锁的解决,如何避免死锁的发生
死锁是指2+的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。原创 2023-11-25 10:57:15 · 13074 阅读 · 0 评论 -
mysql索引分为哪几类,聚簇索引和非聚簇索引的区别,MySQL索引失效的情况有哪几种情况,MySQL索引优化的手段,MySQL回表
聚簇索引索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。原创 2023-11-25 10:07:01 · 1009 阅读 · 2 评论 -
数据库的事务的基本特性,事务的隔离级别,事务隔离级别如何在java代码中使用,使用MySQL数据库演示不同隔离级别下的并发问题
解读:两个事务 A 和 B,首先 A 事务对 数据 a 执行加 500 的操作 a = 1500,此时 B 事务读取数据 a 的值 1500,后 A 事务 又对数据 a 执行减500 的操作 a = 1000 ,A 事务 commit。银行两次查询不一致,可能就会很困惑,不知道哪次查询是准的。以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。原创 2023-11-25 10:01:28 · 1191 阅读 · 1 评论 -
mysql数据库基础知识,Mysql的索引和主键区别,数据库的事务的基本特性
MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 主键就是能够唯一标识表中某一行的属性或者是属性组,一个表只能有一个主键,但可以有多个候选索引。事务是并发控制的基本单位,保证事务ACID的特性是事务处理的重要任务,而并发操作有可能会破坏其ACID特性。**一致性:**我理解的是更侧重结果,事务结束后系统状态是一致的。原创 2023-11-25 09:56:17 · 754 阅读 · 0 评论 -
MySQL数据库的数据类型,varchar与char区别,MySQL数据类型的存储方式
需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。表中只有单列字段情况下,varchar一般最多能存放(65535 - 3)个字节,varchar的最大有效长度通过最大行数据长度和使用的字符集来确定,通常的最大长度是65532个字符(当字符串中的字符都只占1个字节时,能达到65532个字符);列长度小于255字节时,使用1字节表示,否则使用2字节表示。字节,而字符和字节的换算,则与编码方式有关,不同的字符所占的字节是不同的。原创 2023-11-25 09:53:45 · 1103 阅读 · 1 评论 -
MySQL与Redis如何保证数据的一致性
对于这种方案,看看就行,反正我是不会用,太 Low 了,风险也不可控。原创 2023-11-23 20:18:03 · 1540 阅读 · 0 评论 -
mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别
该字段的值是结果集中每条记录的行号ROWNUM字段的值是动态生成的,伴随查询过程。oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。分页查询:就是将数据分段查询出来,一次只查询数据的一部分这样做可以减少系统资源开销,减少数据量,可以提高网络传输速度分页在不同的数据库中的SQL语句是不同的。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。原创 2023-11-22 21:34:42 · 1042 阅读 · 1 评论 -
MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB
MySQL面试的内容,MySQL锁,MySQL事务原创 2023-11-22 21:21:16 · 840 阅读 · 2 评论 -
Linux中安装MySQL8版本,安装MySQL步骤,MySQL8离线安装
注意:默认情况下,GBLIC版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!5.可能是/usr/local/mysql/data/mysql.pid文件没有写的权限。最后重启服务器即可。原创 2023-08-11 22:27:33 · 1766 阅读 · 1 评论 -
MySQL在Linux上安装
1.2 安装mysql经过测试安装已成功-root权限1.2.1.1 系统约定MySQL目录安装位置: /usr/local/mysql数据库保存位置: /usr/local/mysql-data1.2.1.2准备安装包准备mysql安装包可从官网:http://dev.mysql.com/downloads/mysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz mysql安装包-linux1.2.1.3.解压压缩包到目标位置$ cd /usr/l原创 2021-07-19 23:46:50 · 251 阅读 · 0 评论