Mysql基础
文章平均质量分 91
Mysql基础
DP成长之路
这个作者很懒,什么都没留下…
展开
-
分布式系统事务一致性解决方案
开篇在 OLTP 系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的 Bob 给 Smith 转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如 Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有 ACID 特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durabilit转载 2021-08-17 20:59:26 · 402 阅读 · 0 评论 -
分库分表的几种常见玩法及如何解决跨库查询等问题
在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表垂直分表在日常开发和设计中比较常见,通俗的说法叫做“大表拆小表”,拆分是基于关系型数据库中的“列”(字段)进行的。转载 2021-08-17 20:41:22 · 841 阅读 · 0 评论 -
Java接口全链路优化:如何降低接口RT时长
背景:由于以前的应用多且杂,所以最近对公司的应用进行优化改造,需要所有接口RT达到xxx值以下。一、监控那么问题来了~现在应用都是放养式的,几乎没有什么监控工具,不可能根据log一个接口一个接口去捞日志,那怎么知道哪些接口rt长,需要优化呢。 所以第一步我们做的事情就是上监控。监控工具:pinpoint。选择pinpoint有几个方面的考量:1.对应用代码0侵入,这个当然是我们程序员最关心的,谁都不喜欢因为附加功能在自己的应用大动干戈,万一影响原有业务就不值得了。。2.应用依赖关系,转载 2021-08-14 17:07:09 · 1480 阅读 · 0 评论 -
Mysql死锁必看***
咱们使用 MySQL 大概率上都会遇到死锁问题,这实在是个令人非常头痛的问题。本文将会对死锁进行相应介绍,对常见的死锁案例进行相关分析与探讨,以及如何去尽可能避免死锁给出一些建议。话不多说,开整!什么是死锁死锁是并发系统中常见的问题,同样也会出现在数据库MySQL的并发读写请求场景中。当两个及以上的事务,双方都在等待对方释放已经持有的锁或因为加锁顺序不一致造成循环等待锁资源,就会出现“死锁”。常见的报错信息为Deadlock found when trying to get lock.....转载 2021-07-04 01:15:33 · 171 阅读 · 0 评论 -
MySQL 基础题
MySQL 基础关系型数据库介绍顾名思义,关系型数据库就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。大部分关系型数据库都使用 SQL 来操作数据库中的数据。并且,大部分关系型数据库都支持事务的四大特性(ACID)。有哪些常见的关系型数据库呢?MySQL、PostgreSQL、Oracle、SQL Ser转载 2021-07-04 01:14:32 · 321 阅读 · 0 评论 -
面试官:InnoDB解决幻读的方案了解么?
最近要在公司内做一次技术分享,思来想去不知道该分享些什么,最后在朋友的提示下,准备分享一下MySQL的InnoDB引擎下的事务幻读问题与解决方案--LBCC&MVCC。经过好几天的熬夜通宵,终于把这部分的内容捋清楚了。至于为什么说是InnoDB呢?因为MyISAM引擎是不支持事务的。事务概念一个事情由 n 个单元组成,这 n 个单元在执行过程中,要么同时成功,要么同时失败,这就把 n 个单元放在了一个事务之中。举个简单的例子:在不考虑试题正确与否的前提下,一张试卷由多个题目构成,当你答完转载 2021-05-19 00:09:18 · 238 阅读 · 0 评论 -
面试题:如何实现丝滑般的数据库扩容
引言初版如果我们的线上服务不重要,一般来个单体的数据库DB来存储数据即可来。单体应用优点:简单,省事,方便。缺点:数据并发性,稳定性都有问题。进阶随着数据量的不断增大,一般我们要对数据进行水平切分,水平切分的规则你可以简单根据用户id或者用户IP对数据进行取模,实现路由功能。当然也可以增加Slave跟KeepAlived来实现高可用。主从+路由但问题是,如果随着业务发展,目前我们2个库的性能扛不住了,还要继续水平拆分,造出更多库咋办?你一般是如何实现丝滑扩容的呢?转载 2021-05-11 10:18:11 · 142 阅读 · 0 评论 -
Mysql事务的实现原理总结
一、前言相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理 可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有原创 2021-02-20 00:08:35 · 194 阅读 · 0 评论 -
阿里技术:浅谈分库分表那些事儿
本文主要阐述在分库分表改造过程中需要考虑的因素以及对应的解法,还有踩过的那些坑。一 前言我们既然要做分库分表,那总要有个做事的动机。那么,在动手之前,首先就要弄明白下面两个问题。1 什么是分库分表?其实就是字面意思,很好理解: 分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。 分表:从单张表拆分成多张表的过程,将数据散落在多张表内。 2 为什么要分库分表?关键字:提升性能、增加可用性。从...转载 2021-03-22 19:56:25 · 843 阅读 · 0 评论 -
场景+案例分析,SQL优化
前言 SQL优化一般步骤 1、通过慢查日志等定位那些执行效率较低的SQL语句 2、explain 分析SQL的执行计划 3、show profile 分析 4、trace 5、确定问题并采用相应的措施 场景分析 案例1、最左匹配 案例2、隐式转换 案例3、大分页 案例4、in + order by 案例5、范围查询阻断,后续字段不能..转载 2021-03-24 20:00:22 · 140 阅读 · 0 评论 -
MySQL锁总结
MySQL锁总结锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。锁机制共享锁与排他锁共享锁(读锁):其他事务可以读,但不能写。 排他锁(写锁) :其他事务不能读取,也不能写。粒度锁MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务转载 2021-03-27 16:33:08 · 115 阅读 · 0 评论 -
Redis主从复制的问题总结
读写分离的问题1.数据复制的延迟读写分离时,master会异步的将数据复制到slave,如果这是slave发生阻塞,则会延迟master数据的写命令,造成数据不一致的情况解决方法:可以对slave的偏移量值进行监控,如果发现某台slave的偏移量有问题,则将数据读取操作切换到master,但本身这个监控开销比较高,所以关于这个问题,大部分的情况是可以直接使用而不去考虑的。2.读到过期的数据我们知道redis在删除过期key的时候,是有两种策略,第一种是懒惰型策略,即只有当redis操原创 2021-03-31 19:33:56 · 469 阅读 · 0 评论 -
RR和RC的MVCC实现
Mysql事务和并发问题解决办法MVCCMVCC 多版本并发控制机制详解,undo log版本链和ReadView是如何避免并发问题转载 2021-03-27 20:20:45 · 609 阅读 · 0 评论 -
分区取模分库分表策略:多表事务分库内闭环解决方案
一 前言技术同学都知道,当表数据超过一定量级,我们就需要通过分表来解决单表的性能瓶颈问题;当数据库负载超过一定水平线,我们就需要通过分库来解决单库的连接数、性能负载的瓶颈问题。本文主要阐述在同时满足以下业务场景: 分表分库存储 需要对分表数量不同的表进行同事务操作 这些表的分库分表策略依赖的Sharding业务ID一致 等情况下,让这些不同数量级表,在同一个业务ID的事务操作路由到同一分库中的方案,省去解决垮库事务的烦恼。二 案例1. 背景假设有2个数...转载 2021-05-11 09:56:17 · 340 阅读 · 0 评论 -
面试官:你对MySQL中的索引了解多少?
前言因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引, 顺带简单讲述其他引擎。希望小伙伴们能通过这片文章对mysql的索引有更加清晰的认识,废话不多说,我们开始吧。索引介绍首先,我们先带着一些问题来看接下来的内容。 索引是个什么东西? 我们可以创建哪些索引? 哪些字段适合建立索引呢? 索引是不是越多越好呢? 为什么我们不建议使用uuid、身份证号等数据做为主键? 为什么不建议使用select *转载 2021-05-10 11:28:01 · 284 阅读 · 0 评论 -
一文吃透MySql的底层数据结构(满满都是干货)
前言索引结构及查找算法一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢? 其中就涉及到数据库(存储数据)以及查找算法。 先来看一下几种查找算法;目录查找:类似索引 遍历:暴力查找 二分:B+树的基础算法 键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页的概念...转载 2021-05-05 17:03:29 · 243 阅读 · 0 评论 -
告诉面试官,我能优化groupBy,而且知道得很深!
导读当我们交友平台在线上运行一段时间后,为了给平台用户在搜索好友时,在搜索结果中推荐并置顶他感兴趣的好友,这时候,我们会对用户的行为做数据分析,根据分析结果给他推荐其感兴趣的好友。这里,我采用最简单的SQL分析法:对用户过去查看好友的性别和年龄进行统计,按照年龄进行分组得到统计结果。依据该结果,给用户推荐计数最高的某个性别及年龄的好友。那么,假设我们现在有一张用户浏览好友记录的明细表t_user_view,该表的表结构如下:CREATE TABLE `t_user_view` (转载 2021-05-05 16:54:09 · 190 阅读 · 0 评论 -
Mysql的七种锁
MySQL是目前世界上最流行的数据库,InnoDB是MySQL最流行的存储引擎,它在大数据量高并发量的业务场景下,有着非常良好的性能表现,之所以如此,是和InnoDB的锁机制相关。总的来说,InnoDB共有七种类型的锁:(1)自增锁(Auto-inc Locks);(2)共享/排它锁(Shared and Exclusive Locks);(3)意向锁(Intention Locks);(4)插入意向锁(Insert Intention Locks);(5)记录锁(Record .转载 2021-04-27 22:37:20 · 380 阅读 · 0 评论 -
MySQL主从复制
一、什么是主从复制?主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用(好处,或者说为什么要做主从)重点!1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非转载 2021-04-19 09:40:17 · 101 阅读 · 0 评论 -
为什么不建议在 MySQL 中使用 UTF-8?
问题:“为什么不建议在 MySQL 中使用 UTF-8?”记得去年我在往MySQL存入emoji表情????????时,一直出错,无法导入。后来找到办法 -- 通过把utf8改成utf8mb4就可以了,并没有深究。一年后,我看到一篇文章讲到emoji文字占4个字节,通常要用utf-8去接收才行,其他编码可能会出错。我突然想到去年操作MySQL把utf8改成utf8mb4的事儿。嗯?他本身不就是utf8编码么!那我当时还改个锤子?难道,MySQL的utf8不是真正的UTF-8编码吗??! 卧槽转载 2021-04-08 18:55:47 · 127 阅读 · 0 评论 -
SQL基础
前言在日常开发中,一些不常用且又比较基础的知识,过了一段时间之后,总是容易忘记或者变得有点模棱两可。本篇主要记录一些关于MySQL数据库比较基础的知识,以便日后快速查看。SQL命令SQL命令分可以分为四组:DDL、DML、DCL和TCL。四组中包含的命令分别如下DDLDDL是数据定义语言(Data Definition Language)的简称,它处理数据库schemas和描述数据应如何驻留在数据库中。CREATE:创建数据库及其对象(如表,索引,视图,存储过程,函数和触发器)转载 2021-04-07 21:48:56 · 169 阅读 · 0 评论 -
什么是覆盖索引?优点有哪些?
覆盖索引:一个索引中包含所有需要查询字段的值优点:无需回表1.索引条目通常远小于数据行大小,只需要读取索引,则mysql会极大地减少数据访问量。2.因为索引是按照列值顺序存储的,所以对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO少很多。3.一些存储引擎如myisam在内存中只缓存索引,数据则依赖于操作系统来缓存,因此要访问数据需要一次系统调用4.innodb的聚簇索引,覆盖...原创 2020-02-13 11:19:42 · 2492 阅读 · 0 评论