MySQL
MySQL
weixin_46248981
这个作者很懒,什么都没留下…
展开
-
如何检测MySQl的健康状况
https://blog.csdn.net/devin223/article/details/46455243?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault转载 2021-11-07 21:50:24 · 1321 阅读 · 0 评论 -
Join和左连接和右连接
left join(左连接)是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。right join(右连接),返回右表中所有记录和左表中连接字段相等的记录,即返回的记录数和右表的记录数一样。join(等值连接),只返回两个表中连接字段相等的记录...原创 2021-08-31 23:22:32 · 1226 阅读 · 0 评论 -
Redis和MySQL数据如何保存一致性
https://blog.csdn.net/weixin_45127309/article/details/104253328?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogC转载 2021-08-23 12:01:04 · 96 阅读 · 0 评论 -
SQL中where in走索引吗
看情况:1.in条件过多,会导致索引失效,走索引扫描(类似全表扫描)2.in的条件过多,返回数据过多,可能会导致应用堆诶长溢出。https://blog.csdn.net/chengqujin8086/article/details/100910623转载 2021-08-20 22:59:30 · 1374 阅读 · 0 评论 -
如何实现Redis和MySQL数据一致性
https://blog.csdn.net/weixin_45127309/article/details/104253328原创 2021-08-20 22:46:10 · 58 阅读 · 0 评论 -
MySQL Hash索引真的不能进行范围查找吗
其实是可以的,他会借助与其他索引。https://blog.csdn.net/a1229323056/article/details/108380644原创 2021-08-20 22:32:41 · 662 阅读 · 0 评论 -
B树和B+树的区别
单一节点存储的元素更多,使得查询的IO次数更少,所以也就使得它更适合做为数据库MySQL的底层数据结构了。所有的查询都要查找到叶子节点,查询性能是稳定的,而B树,每个节点都可以查找到数据,所以不稳定。所有的叶子节点形成了一个有序链表,更加便于查找。...原创 2021-08-20 22:21:56 · 54 阅读 · 0 评论 -
如何计算B+树的高度呢
一个千万量级别,且存储引擎是MyISAM或者InnoDB的表,其索引树的高度在3-5之间。B+树的索引树的高度就是logNB(logN/logB)N表示记录数,B表示每个节点有B个索引。假设有3000W条数据,每个节点保存64个索引。那么索引的高度就是(log2^25)/log64=25/6=4...转载 2021-08-05 21:17:05 · 2890 阅读 · 0 评论 -
MySQL索引
1.InnoDB索引在底层采用了哪些数据结构B+树索引全文索引哈希索引InnoDB存储引擎支持的哈希索引是自适应的,InnoDB存储引擎会根据表的使用情况自动为表生成哈希索引,不能认为干预是否在一张表中生成哈希索引。B+树索引就是传统意义上的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引。B+树索引的构造类似于二叉树,根据键值快速找到数据。B+树是为磁盘或者其他直接存取辅助设备设计的一种平衡查找树。在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上,由各叶原创 2021-05-26 17:44:04 · 121 阅读 · 0 评论 -
MVCC如何实现
在可重复读隔离级别下,事务在启动时候就拍了个快照。这个快照是基于整个数据库的。那么如何实现这个快照呢?(一致性读)首先每个事务都有唯一的事务ID,叫作transaction id。它是在事务开始的时候向InnoDB的事务系统申请的,是按申请顺序严格递增的。每行数据也有多个版本的,每次事务更新数据的时候,都会生成一个新的数据版本,并且将transaction id赋值给这个数据版本的事务ID,记作row_trx_id。同时,旧的数据版本也要保留,并且在新的数据版本中,能够有信息直接拿到它。也就是说,原创 2021-05-20 11:24:42 · 93 阅读 · 0 评论 -
MySQL死锁
死锁报错:Deadlock found when trying to get lock。1.什么是死锁两个事务都持有对方需要的锁,并且等待对方释放,并且双方都不会释放自己的锁。表级锁不会产生死锁,所以解决死锁问题主要是针对行级锁,也就是InnoDB。2.死锁的产生情况一个用户A访问表A(锁住了表A),然后又访问表B;另一个用户B访问表B(锁住了表B),然后企图访问表A;这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B才能继续,同样用户B要等用户A释放表A才能继续,这时死锁就产生了。解原创 2021-05-18 11:31:25 · 71 阅读 · 0 评论 -
MySQL的锁机制
锁的种类按照锁的粒度:表锁、页锁、行锁使用方法:共享锁和排他锁思想:乐观锁和悲观锁。表锁表锁是粒度最大的锁,开销小,加锁快,不会出现死锁,但是由于粒度太大,因此造成锁的冲突的几率大,并发性能低。MySQL中的MyISAM存储引擎就支持表锁,MyISAM的表锁模式有两种:表共享读锁和表独占写锁。页锁页锁是介于行锁和表锁之间的一种锁,因为页锁是在BDB中支持的一种锁机制。很少人使用。行锁行锁是粒度最小的锁机制,行锁的加锁开销大,加锁慢,并且会出现死锁,但是行锁冲突的几率低,并发性能高。.原创 2021-05-17 22:59:18 · 84 阅读 · 0 评论 -
如何查看SQL的执行情况?(执行计划、explain指令)
https://blog.csdn.net/lululove19870526/article/details/78065560执行计划的查看是进行数据库的SQL语句调优时依据的一个重要依据,mysql的执行计划查看相对Oracle简便很多,功能也相对简单很多。执行计划的生成方法:explain select …...原创 2021-05-12 16:47:05 · 1024 阅读 · 0 评论 -
如何使用慢查询快速定位执行慢的 SQL?
https://blog.csdn.net/zzti_erlie/article/details/87890895慢查询日志(slow log)可帮助DBA定位可能存在问题的SQL语句,从而进行SQL语句层面的优化。例如:可在MySQL启动时设一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。DBA每天或者每过一段时间对其进行检查,确认是否有SQL语句需要进行优化。该阈值可以通过参数long_quary_time设置,默认值为10,代表为10秒。在默认情况下,MySQL数据库并不启原创 2021-05-12 16:06:55 · 116 阅读 · 0 评论 -
一条SQL更新语句是如何执行的
WAL技术:Write-Ahead Logging,先写日志,再写磁盘。当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB会在空闲的时候将这个操作记录更新到磁盘里面。crash-safe:是指有了redo log,InnoDB就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。redo log是物理日志,记录的是某个数据页上做了什么修改;binlog是逻辑日志,记录的是这个语原创 2021-05-11 22:13:33 · 123 阅读 · 0 评论 -
MySQL的组件?以及如何执行查询语句
MySQL包括哪些组件?(连接器、查询缓存、分析器、优化器、执行器)(Server层+存储引擎)为什么不推荐查询缓存功能?为什么MySQL8.0删除了查询缓存?查询SQL语句的执行过程更新SQL语句的执行过程什么是crash-safe?MySQL实现crash-safe的原理?(binlog、redolog、undolog、WAL机制、两阶段提交)更新SQL语句的执行流程中,总共需要写3个日志,这3个日志是不是都需要?能不能简化?两阶段提交的方式会存在什么问题?解决方法?什么是组提交?用于解原创 2021-05-10 11:31:36 · 228 阅读 · 0 评论 -
MySQL事务
1.什么是ACID,并举例说明事务(Transaction):是指作为一个基本工作单元执行的一系列SQL语句的操作,要么完全地执行,要么完全地不执行。原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部回滚失败,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。一致性(Consistency):数据库总是从一个一致性状态转换到另一个一致性状态。隔离性(Isolation):并发访问数据库时,一个用户的事务不被其他原创 2021-03-29 21:16:48 · 54 阅读 · 0 评论