mysql
文章平均质量分 94
普通网友
这个作者很懒,什么都没留下…
展开
-
Mysql 总结整理
从放弃到入门-MySQLInnoDB有多少种日志错误日志:记录出错信息,也记录一些警告信息或者正确的信息查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中二进制日志:记录对数据库执行更改的所有操作中继日志事务日志事务的4种隔离级别读未提交读已提交可重复读串行化B+树索引和哈希索引的区别B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且叶子节点原创 2021-02-16 14:51:00 · 209 阅读 · 0 评论 -
极客时间 分布式数据库 笔记03
16 | 为什么不建议你使用存储过程?17 | 为什么不建议你使用自增主键?18 | HTAP是不是赢者通吃的游戏?19 | 查询性能优化:计算与存储分离架构下有哪些优化思路?20 | 关联查询:如何提升多表Join能力?...原创 2020-10-07 22:02:13 · 1282 阅读 · 0 评论 -
极客时间 分布式数据库 笔记02
10 | 原子性:如何打破事务高延迟的魔咒?并行执行的过程是这样的。准备阶段的操作,在 CockroachDB 中被称为意向写。这个并行执行就是在执行意向写的同时,就写入事务标志,当然这个时候不能确定事务是否提交成功的,所以要引入一个新的状态“Staging”,表示事务正在进行。那么这个记录事务状态的落盘操作和意向写大致是同步发生的,所以只有一轮共识算法开销 而客户端得到所有意向写的成功反馈后,可以直接返回调用方事务提交成功。注意!这...原创 2020-10-06 22:20:50 · 3071 阅读 · 0 评论 -
极客时间 分布式数据库 笔记01
02 强一致性实现单调读一致性的方式,可以是将用户与副本建立固定的映射关系,比如使用哈希算法将用户 ID 映射到固定副本上,这样避免了在多个副本中切换,也就不会出现上面的异常了。 保持这种因果关系的一致性,被称为前缀读或前缀一致性(Consistent Prefix)。要实现这种一致性,可以考虑在原有的评论数据上增加一种显式的因果关系,这样系统可以据此控制在其他进程的读取顺序。综上所述,我们提到的一致性模型强度排序如下:线性一致性 > 顺序...原创 2020-10-06 11:26:50 · 2766 阅读 · 0 评论 -
Mysql 知识点汇总09 极客时间 知识点精华04
28 | 读写分离有哪些坑?第二种方法,对比位点确保主备无延迟:第三种方法,对比 GTID 集合确保主备无延迟:等主库位点方案29 | 如何判断一个数据库是不是出问题了?select 1 判断实际上,select 1 成功返回,只能说明这个库的进程还在,并不能说明主库没问题30 | 答疑文章(二):用动态的观点看加锁因为我要跟你强调这个过程:这些锁是“在执行过程中一个一个加的”,而不是一次性加上去的。..原创 2020-07-01 17:23:59 · 94 阅读 · 0 评论 -
Mysql 知识点汇总08 极客时间 知识点精华03
21 | 为什么我只改一行的语句,锁这么多?这里你需要注意一点,首次 session A 定位查找 id=10 的行的时候,是当做等值查询来判断的,而向右扫描到 id=15 的时候,用的是范围查询判断。22 | MySQL有哪些“饮鸩止渴”提高性能的方法?23 | MySQL是怎么保证数据不丢的?24 | MySQL是怎么保证主备一致的?你可以看到,当 bi原创 2020-07-01 17:07:44 · 76 阅读 · 0 评论 -
Mysql 知识点汇总07 极客时间 知识点精华02
11 | 怎么给字符串字段加索引12 | 为什么我的MySQL会“抖”一下原创 2020-07-01 16:22:36 · 77 阅读 · 0 评论 -
Mysql 知识点汇总06 极客时间 知识点精华01
第2节有了 redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为 crash-safe简单说,redo log 和 binlog 都可以用于表示事务的提交状态,而两阶段提交就是让这两个状态保持逻辑上的一致。第3节第4节N可以特别大,这样树高就比较低,访问磁盘的性能就会很好显然,主键长度越小,普通索引的叶子节点就越小,普通索引占用的空间也就越小第5节...原创 2020-07-01 15:27:08 · 214 阅读 · 0 评论 -
Mysql 知识点汇总05
1 undo1.1 undo是啥undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name='B' 修改为Name = 'B2' ,那么undo日志就会用来存放Name='B'的记录,如果这个修改出现异常,可以使用undo日志来实现回滚操作,保证事务的一致性。对数据的变更操作,主要来自 INSERT UPDATE DELETE,而UNDO LOG中分为两种类型,一种是 INSERT_UNDO(INSERT操作),记录插入的唯一键值;一种是 UPDATE_UNDO(原创 2020-07-01 14:31:51 · 61 阅读 · 0 评论 -
Mysql 意向锁
为什么没有意向锁的话,表锁和行锁不能共存?举个粟子(此时假设行锁和表锁能共存): 事务A锁住表中的一行(写锁)。事务B锁住整个表(写锁)。但你就会发现一个很明显的问题,事务A既然锁住了某一行,其他事务就不可能修改这一行。这与”事务B锁住整个表就能修改表中的任意一行“形成了冲突。所以,没有意向锁的时候,行锁与表锁共存就会存在问题!意向锁是如何让表锁和行锁共存的?有了意向锁之后,前面例子中的事务A在申请行锁(写锁)之前,数据库会自动先给事务A申请表的意向排他锁。当事务B去申请表的写锁时就会失败,因为原创 2020-06-11 21:04:16 · 150 阅读 · 0 评论 -
ElasticSearch 性能优化06
elasticsearch为什么比mysql快想要搞清这个问题要从mysql和ES的索引数据结构下手,咱们先了解一下mysql的索引结构,然后再了解一下ES的索引结构,然后再进行对比这个问题就会很清楚了。mysql关系型数据库索引原理:数据库的索引是B+tree结构主键索引是聚合索引,其他索引是非聚合索引两者对比:第一种情况:基于分词后的全文检索:例如select * from test where name like '%张三%',对于关系型数据库mysql来说原创 2020-06-11 20:51:12 · 106 阅读 · 0 评论 -
Mysql 底层实现 事务
1、原子性在同一个事务内部的一组操作必须全部执行成功(或者全部失败)。为了保证事务操作的原子性,必须实现基于日志的REDO/UNDO机制:将所有对数据的更新操作都写入日志,如果一个事务中的一部分操作已经成功,但以后的操作,由于断电/系统崩溃/其它的软硬件错误而无法继续,则通过回溯日志,将已经执行成功的操作撤销,从而达到“全部操作失败”的目的。 最常见的场景是,数据库系统崩溃后重启,此时数据库处于不一致的状态,必须先执行一个crash recovery的过程:读取日志进行REDO(重演将所有已经执行成原创 2020-05-22 23:44:54 · 371 阅读 · 0 评论 -
mysql 优化案例01
1.订单交易信息表,按照user_id和create_time等查询比较频繁;增加联合索引KEY `idx_user_ct` (`user_id`,`create_time`),2.订单对外的查询接口,按照渠道查询selectByChannelId,修改成分页查询3.订单批量核销任务: 一次执行太多1000条,造成插入的sql报警。修改为100一批次插入订单任务表4.订单批量核销任务...原创 2020-05-23 11:48:15 · 103 阅读 · 0 评论 -
Mysql 知识点汇总04 事务,索引
https://www.cnblogs.com/crazylqy/p/7611069.html这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一...原创 2020-09-29 16:33:24 · 268 阅读 · 0 评论 -
Mysql 知识点汇总03 锁机制 redolog binlog
接下来,我们就一起分析一下在两阶段提交的不同时刻,MySQL 异常重启会出现什么现象。如果在图中时刻 A 的地方,也就是写入 redo log 处于 prepare 阶段之后、写 binlog 之前,发生了崩溃(crash),由于此时 binlog 还没写,redo log 也还没提交,所以崩溃恢复的时候,这个事务会回滚。这时候,binlog 还没写,所以也不会传到备库。到这里,大家都可以...原创 2020-04-26 23:48:31 · 215 阅读 · 0 评论 -
Mysql 知识点汇总02
为什么使用分库分表?传统的将数据集中存储至单一数据节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足互联网的海量数据场景。1)性能从性能方面来说,由于关系型数据库大多采用 B+ 树类型的索引,在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降。同时,高并发访问请求也使得集中式数据库成为系统的最大瓶颈。2)可用性从可用...原创 2020-04-16 20:37:49 · 74 阅读 · 0 评论 -
Mysql 知识点汇总01
https://thinkwon.blog.csdn.net/article/details/104778621数据库基础知识为什么要使用数据库数据保存在内存优点: 存取速度快缺点: 数据不能永久保存数据保存在文件优点: 数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率...原创 2020-04-23 11:46:42 · 349 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记09
41 | 怎么最快地复制一张表?为了便于说明,我还是先创建一个表 db1.t,并插入 1000 行数据,同时创建一个相同结构的表 db2.t。假设,我们要把 db1.t 里面 a>900 的数据行导出来,插入到 db2.t 中。42 | grant之后要跟着flush privileges吗? 在这个 grant 命令执行完成后,如果有新的客户端使...原创 2020-01-25 11:35:22 · 183 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记08
36 | 为什么临时表可以重名? 由于临时表只能被创建它的 session 访问,所以在这个 session 结束的时候,会自动删除临时表。也正是由于这个特性,临时表就特别适合我们文章开头的 join 优化这种场景。为什么呢?37 | 什么时候会使用内部临时表?然后,你可能会有这样的疑问,MySQL 什么时候会使用内部临时表呢?union 执行流程...原创 2020-01-24 20:38:35 · 84 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记06
26 | 备库为什么会延迟好几个小时 但是,如果备库执行日志的速度持续低于主库生成日志的速度,那这个延迟就有可能成了小时级别。而且对于一个压力持续比较高的主库来说,备库很可能永远都追不上主库的节奏。这就涉及到今天我要给你介绍的话题:备库并行复制能力 谈到主备的并行复制能力,我们要关注的是图中黑色的两个箭头。一个箭头代表了客户端写入主库,另一箭头代表的是备库上 sql_thre...原创 2020-01-23 18:07:03 · 88 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记05
间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上犯错在删除数据的时候尽量加 limit。这样不仅可以控制删除数据的条数,让操作更安全,还可以减小加锁的范围22 | MySQL有哪些“饮鸩止渴”提高性能的方法?短连接风暴 正常的短连接模式就是连接到数据库后,执行很少的 SQL 语句就断开,...原创 2020-01-23 11:47:29 · 80 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记04
16 | “order by”是怎么工作的?using filesort 表示需要排序,每个线程分配一块sort_buffer用来排序按照字段 做快速排序排序数据量 如果小于事先分配的内存sort_buffer_size, 就在内存中根据字段进行排序。如果超出了这个内存,就使用磁盘临时文件辅助排序。可以查看number_of_tmp_files 来判断是否使用了临时文件...原创 2020-01-22 18:25:03 · 73 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记03
13 | 为什么表数据删掉一半,表文件大小不变 这里,我们还是针对 MySQL 中应用最广泛的 InnoDB 引擎展开讨论。一个 InnoDB 表包含两部分,即:表结构定义和数据。在 MySQL 8.0 版本以前,表结构是存在以.frm 为后缀的文件里。而 MySQL 8.0 版本,则已经允许把表结构定义放在系统数据表中了。因为表结构定义占用的空间很小,所以我们今天主要讨论的是表数据。...原创 2020-01-22 14:07:27 · 63 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记02
09 | 普通索引和唯一索引,应该怎么选择?由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给 id_card 字段创建唯一索引,要么创建一个普通索引。如果业务代码已经保证了不会写入重复的身份证号,那么这两个选择逻辑上都是正确的现在我要问你的是,从性能的角度考虑,你选择唯一索引还是普通索引呢?选择的依据是什么呢?查询过程假设,执行查询的语句是 s...原创 2020-01-20 22:38:02 · 89 阅读 · 0 评论 -
极客时间 MySQL 实战 笔记01
01一条SQL查询语句是如何执行的大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。其架构模式是插件式的,...原创 2020-05-14 09:50:46 · 181 阅读 · 0 评论 -
知识点复习28 Mysql知识点 09 杂项 && GTID && 半同步
https://blog.csdn.net/cmqwan/article/details/97396507mysql知识点汇总ACID 是什么。A,atomic,原子性,要么都提交,要么都失败,不能一部分成功,一部分失败。C,consistent,一致性,事物开始及结束后,数据的一致性约束没有被破坏I,isolation,隔离性,并发事物间相互不影响,互不干扰。D,durabili...原创 2019-10-05 19:14:02 · 171 阅读 · 0 评论 -
知识点复习27 Mysql知识点 08 事务隔离级别
一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A...原创 2019-10-05 18:20:37 · 129 阅读 · 0 评论 -
知识点复习26 Mysql知识点 07 深入研究索引02
索引使用策略及优化MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴。本章的内容完全基于上文的理论基础,实际上一旦理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并且可以理解这些策略背后的逻辑。最左前缀原理与相关优化高效使用索引的首要条件是知道什么样的查...原创 2019-10-05 18:13:02 · 175 阅读 · 0 评论 -
知识点复习23 Mysql04
数据库知识##数据库隔离级别有哪些,各自的含义是什么,MYSQL 默认的隔离级别是是什么。·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据·提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)·可重复读(Repeated Read):可重复读。在同一个事务内的查询...原创 2019-10-05 15:26:18 · 132 阅读 · 0 评论 -
知识点复习 24 Mysql 知识点05 间隙锁
关于next-key 锁可以参考链接:https://blog.csdn.net/bigtree_3721/article/details/73731377你需要知道的之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。行锁记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。生活中的间隙锁编程的思想源于生活,生活中的例子...原创 2019-10-05 15:21:23 · 249 阅读 · 0 评论 -
知识点复习 22 Mysql 知识点03
事务隔离级别https://www.cnblogs.com/huanongying/p/7021555.html(4)在客户端A,接着执行update balance = balance - 50 where id = 1,balance没有变成400-50=350,lilei的balance值用的是步骤(2)中的350来算的,所以是300,数据的一致性倒是没有被破坏。可重复读的隔离级别下...原创 2019-10-05 15:20:48 · 151 阅读 · 0 评论 -
知识点复习 21 Mysql 知识点02
https://blog.csdn.net/a303549861/article/details/100302267?utm_source=app事务的并发问题?实际场景下,事务并不是串行的,所以会带来如下三个问题:1、脏读:事务 A 读取了事务 B 更新的数据,然后 B 回滚操作,那么 A 读取到的数据是脏数据。2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务 A 多次...原创 2019-10-05 15:21:10 · 142 阅读 · 0 评论 -
知识点复习 20 Mysql 知识点01
数据库的三范式是什么?什么是反模式?1.1第一范式(1NF)第一范式,强调属性的原子性约束,要求属性具有原子性,不可再分解。举个例子,活动表(活动编码,活动名称,活动地址),假设这个场景中,活动地址可以细分为国家、省份、城市、市区、位置,那么就没有达到第一范式。1.2第二范式(2NF)第二范式,强调记录的唯一性约束,表必须有一个主键,并且没有包含在主键中的列必须完全依赖于主键,...原创 2019-10-05 15:20:19 · 292 阅读 · 0 评论