mysql
文章平均质量分 93
数据库
迪崽~
I do what I love.
展开
-
mysql 数据多表join
0 索引JOIN语句的执行顺序INNER/LEFT/RIGHT/FULL JOIN的区别ON和WHERE的区别1 概述一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt),但是结果只返回最后一张虚拟表。从这个思路出发,我们试着理解一下JOIN查询的执行过程并解答一些常见的问题。如果之前对不同JOIN的执行结果没有概念,可以结合这篇文章往下看2 JOIN的执行顺序以下是JOIN查询的通用结构SELECT <row_list> FROM &.转载 2021-07-29 11:18:05 · 5330 阅读 · 0 评论 -
数据库分组排序和优化策略
数据库分组排序和优化策略1、分组排序查询每个部门的最高平均工资select deptno,avg(sal) from emp group by deptno order by avg(sal) limit 0,1;查询到平均工资大于2000的部门的名称,并且显示部门的平均工资:select [department_name],avg([salary]) from [tablename] group by [department_name] having avg([salary]) >200原创 2021-06-16 22:58:57 · 774 阅读 · 0 评论 -
mysql的锁机制和mvcc
一、mysql 常见锁在多节点部署或者多线程执行时,同一个时间可能有多个线程更新相同数据,产生冲突,这就是并发问题。这样的情况下会出现以下问题:更新丢失:一个事务更新数据后,被另一个更新数据的事务覆盖。脏读:一个事务读取另一个事物为提交的数据,即为脏读。其次还有幻读,针对并发引入并发控制机制,即加锁。加锁的目的是在同一个时间只有一个事务在更新数据,通过锁独占数据的修改权。1、乐观锁:使用版本标识来确定读到的数据与提交时的数据是否一致。在每一行记录的后面增加两个隐藏列,记录创建版本号和删除版本号,原创 2021-04-09 00:04:57 · 1197 阅读 · 0 评论 -
分布式一致算法
一、拜占庭将军问题拜占庭将军问题: 拜占庭派多支军队去围攻一个敌人,将军不确定军队中是否有叛徒,叛徒可能擅自变更进攻决定。至少一半以上的军队同时进攻才可以取胜。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而就进攻问题达成一致?这就是著名的拜占庭将军问题。二、Paxos算法:背景:在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地原创 2021-03-16 10:16:13 · 194 阅读 · 0 评论 -
分布式事务和分布式锁
一、分布式事务1.1 背景传统事务ACID是基于单数据库的本地事务,仅支持单机事务,并不支持跨库事务。但随着微服务架构的普及,业务的分库分表导致一个大型业务系统往往由若干个子系统构成,这些子系统又拥有各自独立的数据库。往往一个业务流程需要由多个子系统共同完成,而且这些操作可能需要在一个事务中完成,这种事务即为“分布式事务”。当更新内容同时分布在不同库中,不可避免会带来跨库事务问题。跨分片事务也是分布式事务,没有简单的方案,一般可使用"XA协议"和"两阶段提交"处理。分布式事务能最大限度保证了数据库操作的原创 2021-03-14 23:46:59 · 3948 阅读 · 2 评论 -
mysql的分库分表和表关系建立
一、mysql主备延时如何解决?主备延迟的来源: 产生主备延迟的根本原因是备库上消费 binlog 的速度赶不上主库产生 binlog 的速度1.备库所在机器的性能要比主库所在的机器性能差,主从库之间的网络延迟。2.备库的压力大。主库既然提供了写能力,那么备库可以提供一些读能力。或者一些运营后台需要的分析语句,不能影响正常业务,所以只能在备库上跑。结果就是,备库上的查询耗费了大量的CPU资源,影响了同步速度,造成主备延迟。处理方案提高从库的机器性能。一主多从。除了备库外,可以多接几个从库,my原创 2021-03-13 17:02:13 · 975 阅读 · 2 评论 -
mysql 高可用架构分析
前言1、在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致。当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务。一、主从架构1.1 一主一从:mysql 配置为主从模式,从库是主库的 backup,同一时间设置其中一台为主服务器,提供原创 2021-03-11 14:21:39 · 644 阅读 · 1 评论 -
mysql的索引剖析
mysql的索引剖析一、索引简介1、概念:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。索引需要占用磁盘空间,因此在创建索引时要考虑到磁盘空间是否足够,并且创建索引时需要对表加锁,因此实际操作中需要在业务空闲期间进行。2、索引的优缺点优势: 可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排原创 2020-07-28 15:28:00 · 625 阅读 · 1 评论 -
mysql 日志和同步方式
一、日志1、redo log:InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。redo log在事务没有提交前,每一个修改操作都会记录变更后的数据,redolog是工作在物理层,它的作用主要是为了减少磁盘开销。因为磁盘操作是极为耗时的,因此,不可能每次对数据的更改都直接写入磁盘。redolog的作用就是缓存起来这些数据改动(缓存到磁盘),等缓存到达一定的数量后再统一写磁盘。为防止在发生故障的时间点,尚有脏页未写入磁盘,在重启原创 2021-03-07 21:13:37 · 1426 阅读 · 3 评论