关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况。为什么呢?先看一下这篇文章。做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为问题就来了,当 2 个人同时来借的时候,有可能第一个人执行
转载
2024-02-21 11:39:50
6阅读
目录1、什么是索引2、索引的类型3、为什么要用索引4、索引的使用场景5、索引为什么要用B+树,为什么不能用二叉树、红黑树、B树?介绍一款可以帮助理解数据结构的网站(很好用):Data Structure Visualization5.1 二叉查找树5.2 红黑树(平衡二叉查找树)5.3 B树5.4 B+树 5.5 Hash6、哪些情况索引会失效?1、什么是索引索引是为了加速对表中数据行的
转载
2024-09-21 07:20:29
38阅读
为什么用了索引之后,查询就会变快?相信很多程序员朋友对数据的索引并不陌生,最常见的索引是 B+ Tree 索引,索引可以加快数据库的检索速度,但是会降低新增、修改、删除操作的速度,一些错误的写法会导致索引失效等等。但是如果被问到,为什么用了索引之后,查询就会变快?B+ Tree 索引的原理是什么?这时候很多人可能就不知道了,今天我就以 MySQL 的 InnoDB 引擎为例,讲一讲 B+ Tree
转载
2024-03-18 14:26:25
35阅读
很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止,但有没有考虑过索引为什么能使查询变快呢?索引是使用B+树(二叉树)实现的数据结构。上图中左边是数据库中的数据表,有col1和col2两个字段,一共有15条记录;右边是以col2列为索引列的B_TREE索引,每个节点包含索引的键值和对应数据表地址的指针,这样就可以都过B_TREE在O(logn)的时间复杂度内获取相应的数据,这样
转载
2024-03-18 22:49:29
39阅读
一、索引:索引时数据库中提高查询效率的技术,类似于字典的目录;1、为什么使用索引?如果不使用索引,数据会零散的保存在每一个磁盘块当中,查询数据时,需要挨个的遍历每一个磁盘块查找数据,如果数据量非常大,遍历每一块数据也是一件非常耗时的事情,添加索引后,会将磁盘块以树状结构进行保存,查询数据时会有目的性的访问部分磁盘块,因为访问的磁盘块数量降低,所以能够起到提高查询效率的作用;2、索引是越多越好吗?不
转载
2024-04-02 06:06:58
47阅读
文章目录1.什么是索引?2.为什么需要索引?3.如何设计索引系统?4.MYSQL索引系统是什么呢?为什么不按照上面说的格式储存呢?5.哈希表6.树6.1 二叉树6.2 二分查找树(Binary Search Tree ,BST)6.3 平衡二叉树(Balanced Binary Tree, AVL树)6.4 红黑树6.5 B树6.6 B+树总结 1.什么是索引?索引是为了加速对表中数据行的检索而
转载
2024-03-20 20:51:15
15阅读
面试官:你在工作中有遇到SQL查询比较慢的情况吗?果子:有的。随着业务的发展,表中的数据量会越来越大,查询就会越来越慢面试官:那你是如何优化查询慢的问题?果子:在需要查询的列上加索引面试官:那你知道为什么加索引可以让查询变快吗?果子:。。。思考中。。。今天我们就来聊一聊,为什么加了索引查询会变快?什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,
转载
2024-05-06 20:39:14
42阅读
首先来看看表是否有索引的命令show index from 表名;看到主键索引,索引类型是BTREE(二叉树)正是因为这个二叉树算法,让查询速度快很多,二叉树的原理,就是取最中间的一个数,然后把大于这个数的往右边排,小于这个数的就向左排,每次减半,然后依次类推,每次减半,形成一个树状结构图例如上面的例子,我们不使用索引的话,需要查询11次才把编号为4的数据取出,如果加上索引,我们只需要4次就可以取
转载
2024-07-28 13:14:56
23阅读
很多时候有人会问我们为啥要用数据库,把数据存放在一个文件中不就行啦,而且数据库连接,操作,那么麻烦。其实我当初也有过这种疑问,想来好笑。也许到现在我也没有真正地弄懂数据库究竟有哪些作用,但是我知道,数据库可以帮助我们高效地组织、存储和管理数据,提供高效地增删改查功能,保证数据安全性,数据完整性,提供数据备份等等一系
转载
2024-03-18 21:42:02
20阅读
BATJ面试题剖析1、为什么需要使用索引?2、数据结构Hash、平衡二叉树、B树、B+树区别?3、机械硬盘、固态硬盘区别?4、Myisam与Innodb B+树的区别?5、MySQL中的索引什么数据结构?6、MySQL数据库优化方案?
1.为什么需要使用索引?MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。也就是说:索引就像书的目录一样
转载
2024-06-05 16:32:39
28阅读
比如一本比较厚的书,我们需要找到对应的知识点,我们的习惯一般都是先看目录,根据目录去找到对应的知识点。试想一下,假如这本比较厚的书没有目录,我们就需要从前面到后面一页一页地找,直到找到对应的知识点,这个过程估计得耗费一段时间了。跟书本创建目录一样,我们使用 MySQL 时,会考虑在需要做条件查询的字段上添加索引。那么为什么添加索引能提高 MySQL 的查询速度呢?这一节就一起来聊聊这个话题吧。为了
转载
2024-04-14 23:46:15
39阅读
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。&
转载
2023-11-20 21:10:59
171阅读
大多数人对索引对理解 都只是为“索引可以增加查询速度”。但是深入思考还会出现如下问题:为什么要给表加主键。为什么增加索引之后,查询的速度变快。为什么索引会使插入,删除,更改速度变慢。什么情况下在两个字段下面设置索引知道这些问题的答案有什么好处呢?如果开发的应用使用的数据库表中只有1万条数据,那么了解与不了解真的没有差别, 然而, 如果开发的应用有几百上千万甚至亿级别的数据,那么不深入了解索引的原理
转载
2024-03-21 10:40:50
53阅读
前戏使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索引能使查询变快”这个概念为止。为什么要给表加上主键?为什么加索引后会使查询变快?为什么加索引后会
文章目录一、建立索引二、索引的缺点三、索引创建原则四、索引分类五、单列索引普通索引唯一索引主键索引六、索引的最左匹配前缀原则单列索引的情况组合索引的情况七、索引使用总结 一、建立索引索引本质上是通过空间来换时间,主要目的是为了提高查询速度。 数据量很少时,没必要建立索引;但是数据量很大时,建立索引的意义就很大了。二、索引的缺点1、写入数据时耗费时间会比没有索引时更多,因为需要创建索引,更新索引。
转载
2024-10-19 19:30:53
26阅读
为什么用了索引之后,查询就会变快?相信很多程序员朋友对数据的索引并不陌生,最常见的索引是 B+ Tree 索引,索引可以加快数据库的检索速度,但是会降低新增、修改、删除操作的速度,一些错误的写法会导致索引失效等等。但是如果被问到,为什么用了索引之后,查询就会变快?B+ Tree 索引的原理是什么?这时候很多人可能就不知道了,今天我就以 MySQL 的 InnoDB 引擎为例,讲一讲 B+ Tree
转载
2024-05-15 09:20:45
17阅读
使用自定义的类作为HashMap的键,必须重载hashCode()和equals()方法,因为这两个方法都是继承自Object类,默认是基于对象地址计算hashCode()和equals()方法。hashCode()并不需要总是返回唯一的标识码。HashMap或者HashSet快的原因:其他查询慢的原因是对于键或者值查询上,因为键或者只没有按特定顺序保存,所以只能采用简单的线性查询,而线性查询是最
转载
2024-03-27 05:40:14
28阅读
多表连接JOIN 语句应尽可能减少 NestedLoop 次数,即永远用小结果集驱动大结果集;优先优化 NestedLoop 内层循环;保证 JOIN 语句中被驱动表上的条件字段已经被索引;不能保证 JOIN 语句中被驱动表上的条件字段已经被索引且内存资源充足的情况下可以加大 JOIN BUFFER 的设置。双表连接左连接时给右表条件字段加索引,右连接时给左表条件字段加索引。EXPLAIN&nbs
转载
2024-07-30 10:56:21
39阅读
面试官:你在工作中有遇到SQL查询比较慢的情况吗?果子:有的。随着业务的发展,表中的数据量会越来越大,查询就会越来越慢面试官:那你是如何优化查询慢的问题?果子:在需要查询的列上加索引,加了索引就会变快面试官司:那你知道为什么加了索引查询就会变快吗?果子:。。。思考中。。。今天我们就来聊一聊,为什么加了索引查询会变快?什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行
转载
2024-04-02 13:22:33
18阅读
MySQL高级第一篇:索引的来源,优缺点及B+树的演化一、为什么使用索引?二、索引的优缺点?优点缺点三、InnoDB索引演化3.1. 索引之前的普通查找1. 假设表的数据不多,数据可以被放在一个页,根据条件搜索时,有两种情况:2. 大部分情况表中的记录比较多,需要分成多个页存储,这时查找记录分为两步:3.2 索引是怎么设计的?1. 目录项记录的页2. 多个目录项记录的页3. 目录页再抽取页4.
转载
2023-11-01 22:20:49
34阅读