
MySql
文章平均质量分 81
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System。
逆流°只是风景-bjhxcc
当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。
展开
-
【MySQL】MySQL体系架构
值得一提的是,MySQL中的存储引擎是插件式的,服务器中的查询执行引擎通过相关的接口与存储引擎进行通信,同时,接口屏蔽了不同存储引擎之间的差异。很多小伙伴工作很长时间了,对于MySQL的掌握程度却仅仅停留在表面的CRUD,对于MySQL深层次的原理和技术知识了解的少之又少,随着工作年限的不断增长,职场竞争力却是不断降低的。存放Innodb存储引擎的数据文件和索引文件,主要存放的是共享表空间的数据和索引,所有表共用一个(或者多个).ibdata文件,可以根据配置来指定共用的.ibdata文件个数。原创 2023-05-25 23:39:52 · 1836 阅读 · 0 评论 -
【表分区】MySQL表分区(partition)创建、查询、删除以及重建分区等
MySQL 支持表分区功能,可以通过分区来提高大型表的性能。分区可以基于不同的策略进行,例如基于范围(RANGE)、列表(LIST)、散列(HASH)或键(KEY)。请注意,分区操作可能会导致大量的 I/O 操作,特别是在大型表上。因此,在执行这些操作时应该谨慎,并考虑在低峰时段进行。以上示例展示了基本的分区操作。根据实际需求,可能还需要结合其他 SQL 语句来管理分区,例如。查询分区表与查询普通表相似,不需要特别的语法。下面是一些基本的示例,展示如何在 MySQL 中创建、查询、删除以及重建分区。原创 2024-09-30 20:47:25 · 1024 阅读 · 0 评论 -
【MySQL】好好学习一下InnoDB中的页
周末没啥计划,把大佬的又翻了出来,重新学习一下页的概念。页这个东西,看起来不怎么显眼,但是深层的东西都会碰到他,又爱又恨,逼着人必须弄懂。页是存储的基础,也是索引的基础,了解了页后面就可以深入的了解索引了。这一块没了解太深,毕竟这东西其实我应用的场景几乎没有,主要是不弄清楚后面读起来很难受。尽量做到了自己去输出东西,整理了一些问题,但是毕竟站在别人修好的路上面,有些东西不能保证一定是对的,也有可能是我理解有误,如果有问题建议去看原文或者官方文档。原创 2023-08-20 19:35:52 · 471 阅读 · 0 评论 -
【MySQL】MySQL不走索引的情况分析
未建立索引当数据表没有设计相关索引时,查询会扫描全表。sql复制代码create table test_tempexplain建议查询频繁是数据表字段增加合适的索引。查询结果集是原表中的大部分数据当数据库查询命中索引时,数据库会首先利用索引列的值定位到对应的数据节点。这个数据节点上记录了对应数据行的行标识符(Row Identifier)。然而,如果查询需要获取该行其他列的数据,就需要进行回表操作。原创 2023-08-13 23:57:14 · 1154 阅读 · 1 评论 -
【MySql】RR有幻读问题吗?MVCC能否解决幻读?
幻读是 MySQL 中一个非常普遍,且面试中经常被问到的问题,如果你还搞不懂什么是幻读?什么是 MVCC?以及 MySQL 中的锁?原创 2023-08-10 06:38:52 · 352 阅读 · 0 评论 -
【高并发】热点数据更新导致CPU100%的解决方案
在平常的工作中,更新数据是再正常不过的一个需求了,我们只需要执行一个update语句即可,如果有必要我们还可以加上事务来保证数据的可靠性。但是如果这是一个热点数据,就比如说直播下单,如果这个商品很火爆,价格又很低,那么就会有很多人下单,这种下单不像秒杀,秒杀是有限制数量,但是这种直播下单是不限量的,可以同时有很多人在下单,这时候用户来下单,那么首先就要判断库存是否足够,如果有库存,那么就更新库存。这时候,这个库存就成了热点数据,因为如果有几万人同时下单,那么就会导致同时有几万个线程来更新这个库存数据。原创 2023-08-03 05:00:00 · 668 阅读 · 0 评论 -
【分库分表】分库分表常见问题和解决方案
表数据量过大sql查询太复杂sql查询没走索引数据库服务器的性能过低等。原创 2023-07-26 20:09:29 · 1228 阅读 · 0 评论 -
【面试】MySQL 中InnoDB与MyISAM的区别是什么?
许多同学都把 MySQL 作为自己的数据库,但是可能用过最多的就是 SQL 语句,以及一些 ORM 的写法,而对底层的实现了解甚少,比如上述问题中,InnoDB 和 MyISAM 分别是什么,可能都不是非常清楚。然而在一些大型公司(比如腾讯)的面试题中,可能会高频率地出现这类的问题,所以对于这类问题的正确理解,就显得非常重要了。其实 InnoDB 和 MyISAM 是 MySQL 的两个「存储引擎」。原创 2023-07-25 10:28:11 · 549 阅读 · 0 评论 -
【MySQl】MySQl中的乐观锁是怎么实现的
mysql中的乐观锁是怎么实现的?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。原创 2023-07-21 21:46:05 · 7492 阅读 · 1 评论 -
【技术方案选型】MySQL数据库分库分表方案
随着项目不断迭代,使用人数的不断增加。数据库中某些表数据正在逐步膨胀,往单表千万迅速靠拢。所以最近领导也在考虑做一下分库分表,写此文章记录下来。分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。分表:从单张表拆分成多张表的过程,将数据散落在多张表内。挑选了两个使用最多的进行了比较,综合来看的话感觉还是Sharding-jdbc更省事一些,无需部署中间件,只通过引入jar包进行分库分表操作,省去一些事情。而且多一个中间件的话系统稳定性也会降低了。原创 2023-07-19 23:23:52 · 775 阅读 · 0 评论 -
【MySQL】MySQL8.1.0版本正式发布带来哪些新特性?
2023年7月18日晚,MySQL官方网站正式发布了MySQL8.1.0与8.0.34版本.原创 2023-07-19 10:09:37 · 5304 阅读 · 0 评论 -
【MySQL】 如何在MySQL中获取表中的某个字段为最大值和倒数第二条的整条数据?
在MySQL中,我们经常需要操作数据库中的数据。有时我们需要获取表中的倒数第二个记录。这个需求看似简单,但是如果不知道正确的SQL查询语句,可能会浪费很多时间。在本篇文章中,我们将探讨如何使用MySQL查询获取表中的倒数第二个记录。原创 2023-07-17 22:10:22 · 2335 阅读 · 0 评论 -
【MySQL】从执行计划了解MySQL优化策略
在MySQL中,执行计划是优化器根据查询语句生成的一种重要的数据结构,它描述了如何通过组合底层操作实现查询的逻辑。当我们编写一条SQL语句时,MySQL会自动对其进行优化,并生成最优的执行计划以实现更快的查询速度。各位精通MySQL的大佬们,像往常一样,我们经常会遇见一堆SQL查询要处理。作为一个优秀的MySQL的操盘手,不能让这些SQL语句任性地在数据库中胡乱扔,必须要好好管管它们!但是,面对复杂的SQL语句和复杂的数据库架构,我们如何才能快速和准确地分析查询性能?原创 2023-07-16 23:19:44 · 657 阅读 · 0 评论 -
【MySQL】MySQL中SQL执行流程
这里需要注意的是在MySQL 8中,查询缓存功能已经被移除。在之前的MySQL版本中,查询缓存允许将查询结果缓存在内存中,以便在后续相同的查询请求中直接返回缓存结果,从而提高查询性能。在MySQL中,存储引擎是可插拔的,这意味着可以根据需求选择适合的存储引擎来管理数据。binlog有记录,redolog状态prepare:在binlog写完提交事务之前的crash,恢复操作:提交事务。binlog无记录,redolog状态prepare:在binlog写完之前的crash,恢复操作:回滚事务。原创 2023-06-29 09:02:58 · 3116 阅读 · 0 评论 -
【数据库】数据库设计的基本原则和主要步骤以及应注意什么?
在数据库设计的时候一般要遵循一些规范,也是工作中总结出来的经验,拿来和大家分享null的列使索引/索引统计/值都比较复杂,对MySQL来说更难优化null这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性以上是数据设计的基本原则和主要步骤以及设计的时候注意的事项希望对大家有帮助!原创 2023-06-02 09:58:16 · 2925 阅读 · 0 评论 -
【MySQL 】MySQL innoDB底层基础原理总结
由于正在准备之后的实习面试,故总结了一部分MYSQL innoDB基础的问题,回答全为自己组织的语言,若有错各位大佬可及时指出,大家共同进步,谢谢。innoDB存储引擎主要支持B+Tree索引、哈希索引、全文索引,其中最常用最有效的则是利用B+Tree结构实现的B+Tree索引,而为何要采用B+Tree作为索引结构呢,则是因为在数据库存取性能评估上,磁盘I/O是目前最大瓶颈,而磁盘I/O速率属于硬件设计范畴。系统层面想要提高存取效率只能尽量减少磁盘I/O,所以由于磁盘特性,Tree可以将节点大小初始化为磁盘原创 2023-05-30 10:30:15 · 2852 阅读 · 0 评论 -
【MySQL】MySQL间隙锁--幻读解决原理
这是因为,为了防止幻读,除了age=18这条数据加了共享锁,其两侧也被加上了间隙锁,因为在这种情况下,插入(age=18,id=10)和(age=18,id=8)是会发生幻读的,所以在一切会影响select * from user where age=18查询结果的地方都加上了间隙锁,但这也会导致一些本不影响查询结果的语句也执行失败,比如插入(age=17,id=24)虽然不影响上述SQL执行结果,由于在间隙锁范围内,依然无法插入。原创 2023-05-29 19:53:39 · 2322 阅读 · 1 评论 -
【MySql】InnoDB一棵B+树可以存放多少行数据?
有一道MySQL的面试题,为什么MySQL的索引要使用B+树而不是其它树形结构?比如B树?现在这个问题的复杂版本可以参考本文;他的简单版本回答是:因为B树不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低;本文从一个问题出发,逐步介绍了InnoDB索引组织表的原理、查询方式,并结合已有知识,回答该问题,结合实践来证明。原创 2023-05-29 19:25:22 · 2858 阅读 · 0 评论 -
【MySQL】MySql的底层数据结构
一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢?其中就涉及到数据库(存储数据)以及查找算法。先来看一下几种查找算法;目录查找:类似索引遍历:暴力查找二分:B+树的基础算法键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页的概念:每一页大概16KB。原创 2023-05-29 14:26:03 · 3434 阅读 · 0 评论 -
【MySQL】MySQL的事务原理和实现?
什么是redo log?redo log叫做重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都会存到该日志中。假设有个表叫做tb1(id,username) 现在要插入数据(3,ceshi)// 生成 重做日志 balance=600 update bank set balance = balance - 400;原创 2023-05-29 10:30:48 · 4989 阅读 · 0 评论 -
【MySQL】MySQL主从同步延迟原因与解决方案
同步参数调整主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置是需要的而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也可以设置为0来提高sql的执行效率。MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。单个库读写分离,一主多从,主写从读,分散压力。原创 2023-05-26 09:14:06 · 4200 阅读 · 1 评论 -
【Mysql】什么是大事务?以及大事务产生的问题
运行时间比较长,操作的数据比较多的事务我们称之为大事务。例如,执行超过5s,10s,1min…原创 2023-05-25 23:15:29 · 4750 阅读 · 0 评论 -
【数据库】MySQL索引的优点和缺点
通俗的来说,索引就相当于一个字典的目录,为了方便查找书中的内容,通过对内容建立索引形成目录,索引是一个文件,它是要占据物理内存的。官方的来说索引它是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据表中的数据。原创 2023-05-21 17:18:26 · 1454 阅读 · 0 评论 -
【MySQL】MySQL百万数据深度分页优化思路分析
我们现在知道了LIMIT 遇到后面查询的性能越差,性能差的原因是因为要回表,既然已经找到了问题那么我们只需要减少回表的次数就可以提升查询性能了。原创 2023-05-17 10:33:03 · 474 阅读 · 0 评论 -
【MySQL】MySQL索引--聚簇索引和非聚簇索引的区别
数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引两种。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储。我们熟悉的InnoDB和MyISAM两大引擎,InnoDB的默认数据结构是聚簇索引,而MyISAM是非聚簇索引。聚簇索引(Clustered Index)并不是一种单独的索引类型,而是一种数据存储方式。当表有了聚簇索引的时候,表的数据行都存放在索引树的叶子页中。无法把数据行放到两个不同的地方,所以一张表只允许有一个聚簇索引。原创 2023-05-15 16:52:16 · 4805 阅读 · 0 评论 -
【MySQL】MySQL批量插入测试数据的几种方式
在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 又或者学习验证某一知识点经常需要一些测试数据, 这个时候如果手敲的话, 十行二十行还好, 多了就很死亡了, 接下来介绍两种常用的MySQL测试数据批量生成方式存储方式+函数Navicat的数据生成。原创 2023-05-15 10:44:48 · 1339 阅读 · 2 评论 -
【MySQL】MySQL索引之最左前缀优化
当我们使用联合索引的时候, 在where子句中要考虑最左前缀索引是否使用到了, 合理的去创建索引, 因为 MySQL有优化器的存在, 所以在where子句中不用考虑字段的顺序问题但是在order by使用联合索引的时候, 要考虑order by字段和索引顺序是否一致, 排序规则和索引是否一致。原创 2023-05-15 10:28:25 · 911 阅读 · 0 评论 -
【MySQL】MySQL 知识点总结
MySQL相信大家都耳熟能详了, 毕竟其还不错的性能和免费的特点深受国人的喜爱, 本篇文章将作为我《MySQL》系列的一篇文章, 主要用作整理和简单的概述MySQL相关的一些知识点ok, 接下来我们开始进入正题, 从最简单的开始SQL的隔离级别隔离级别脏读不可重复读幻读加锁读未提交读是是是否提交读否是是否可重复读否否是否串行化否否否是。原创 2023-05-09 06:00:00 · 1672 阅读 · 1 评论 -
【MySQL】Mysql索引失效场景(15个必知)
第十三种索引失效情况:当查询条件涉及到order by、limit等条件时,是否走索引情况比较复杂,而且与Mysql版本有关,通常普通索引,如果未使用limit,则不会走索引。这里要说的其他,可以总结为第十五种索引失效的情况:Mysql优化器的其他优化策略,比如优化器认为在某些情况下,全表扫描比走索引快,则它就会放弃索引。很显然,依旧走了union_idx索引,根据上面key_len的分析,大胆猜测,在使用索引时,不仅使用了id_no列,还使用了username列。同时,还伴随着性能问题。原创 2023-05-08 06:00:00 · 806 阅读 · 2 评论 -
【数据库】MVCC原理详解
MVCC实现原理是一道非常高频的面试题,最近技术讨论群的小伙伴一直在讨论,趁着五一假期有空,我们一起来聊聊。事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。为什么要有事务呢?就是为了保证数据的最终一致性。原创 2023-04-28 15:59:54 · 5879 阅读 · 3 评论 -
【数据库】事务的隔离级别以及实现原理
原子性一致性隔离性持久性幻读和不可重复读都是在同一个事务中多次读取了其他事务已经提交的事务的数据导致每次读取的数据不一致,所不同的是不可重复读读取的是同一条数据,而幻读针对的是一批数据整体的统计(比如数据的个数)以MYSQL数据库来分析四种隔离级别。原创 2023-04-26 16:42:58 · 2557 阅读 · 1 评论 -
【技术选型】Mysql和ES数据同步方案汇总
本文主要对Mysql和ES进行数据同步的常见方案进行了汇总说明。同步双写是最简单的同步方式,能最大程度保证数据同步写入的实时性,最大的问题是代码侵入性太强。异步双写引入了消息中间件,由于MQ都是异步消费模型,所以可能出现数据同步延迟的问题。好处是在大规模消息同步时吞吐量更、高性能更好,便于接入更多的数据源,且各个数据源数据消费写入相互隔离互不影响。基于Mysql表定时扫描同步。原创 2023-04-25 20:36:35 · 1223 阅读 · 0 评论 -
【MySQL】如何使用MySQL锁(全局锁、表级锁、行级锁)?
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源()的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。全局锁:锁定数据库中的所有表。表级锁:每次操作锁住整张表。行级锁:每次操作锁住对应的行数据。全局锁就是对整个数据库实例加锁。原创 2023-04-20 21:01:54 · 1583 阅读 · 0 评论 -
【中间件】Redis与MySQL双写一致性如何保证?--缓存和数据库在双写场景下一致性是如何保证的
缓存和数据库在双写场景下,一致性是如何保证的?原创 2023-03-18 12:00:00 · 686 阅读 · 0 评论 -
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
非主键索引的查询需要多扫描一颗索引树, 效率相对更低.普通索引是最基本的索引类型,没有任何限制,值可以为空,仅加速查询。普通索引是可以重复的,一个表中可以有多个普通索引。主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;索引列的所有值都只能出现一次,即必须唯一。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个。原创 2023-04-13 08:09:34 · 577 阅读 · 0 评论 -
【MySQL】MySQL表设计的经验(建议收藏)
作为后端开发,我们经常需要设计数据库表。整理了21个设计MySQL表的经验准则,分享给大家,希望大家看完会有帮助。如果没有特殊的理由, 一般都建议将字段定义为 NOT NULL。为什么呢?首先,NOT NULL可以防止出现空指针问题。其次,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL。NULL值有可能会导致索引失效如果将字段默认设置成一个空字符串或常量值并没有什么不同,且都不会影响到应用逻辑, 那就可以将这个字段设置为NOT NULL。原创 2023-03-24 06:30:00 · 993 阅读 · 0 评论 -
【MySql】MySQL数据库--什么是MySQL的回表 ?
通俗的讲就是,如果索引的列在 select 所需获得的列中(因为在 mysql 中索引是根据索引列的值进行排序的,所以索引节点中存在该列中的部分值)或者根据一次索引查询就能获得记录就不需要回表,如果 select 所需获得列中有大量的非索引列,索引就需要到表中找到相应的列的信息,这就叫回表。InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:(1)如果表定义了主键,则PK就是聚集索引;原创 2023-03-23 15:00:00 · 755 阅读 · 0 评论 -
【MySql】MySQL索引15连问(相信大家看完肯定会有帮助)
当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。比如在第6小节中,使用的查询SQL需要查询所有列的数据,idx_age普通索引不能满足,需要拿到主键id的值后,再回到id主键索引查找获取,这个过程就是回表。如果我们查询SQL的select * 修改为 select id, age的话,其实是不需要回表的。因为id和age的值,都在idx_age索引树的叶子节点上,这就涉及到覆盖索引的只是点了。原创 2023-03-17 19:00:00 · 827 阅读 · 2 评论 -
【图形工具】MySQL Workbench 图形化界面工具
MySQL官方提供了一款免费的图形工具——MySQL Workbench,它是一款功能强大且易于使用的数据库设计、管理和开发工具,总之,MySQL Workbench是一款非常好用的MySQL图形工具,可以满足大多数MySQL用户的需求。设计后的效果。原创 2023-03-16 06:15:00 · 2959 阅读 · 0 评论 -
【性能优化】MySql查询性能优化必知必会
本文内容主要包括以下几个方面:分析查询SQL,MySQL查询优化器、数据库存储结构、索引,索引维护,索引设计,SQL优化,表结构设计,分库分表,查询功能架构设计。原创 2023-02-11 12:00:26 · 1076 阅读 · 0 评论