
Mysql模块
文章平均质量分 81
本兮言
“任何事情,没有坚持3个月,就没有发言权!没有坚持3年,就不能说自己懂!没有坚持7年,就不可能是专家!没有坚持10年以上,就不会拥有权威!没有坚持一辈子,就不可能有所成就!选择自己真正想做的事情,每天重复做,能坚持下来的人,定会成为某一领域的领航者。成功没有捷径,坚持才能成功!”
展开
-
mysql 隔离级别与锁
1、什么是事务事务是一条或多条数据库操作语句的组合,具备ACID,4个特点。原子性:要不全部成功,要不全部撤销隔离性:事务之间相互独立,互不干扰一致性:数据库正确地改变状态后,数据库的一致性约束没有被破坏持久性:事务的提交结果,将持久保存在数据库中(通过redo和undo来实现得) 2、事务并发会产生什么问题1)第一类丢失更新:在没有事务隔离的情况下,两个事务都同时...原创 2018-03-26 09:23:47 · 3129 阅读 · 0 评论 -
读书笔记:MySql性能调优与架构设计
数据库优化: 需求和架构及业务实现优化:55% Query语句的优化:30% 数据库自身的优化:15%mysql锁定机制:锁机制的实现直接影响数据库的处理并发能力和性能,并且是否保证数据的一致性而各种共享资源在被并发访问变得有序所设计的一种规则 mysql:各引擎使用三种类似(级别)的锁定机制:行级锁、页级锁和表级锁 行级锁定:锁定...原创 2019-03-20 10:57:43 · 616 阅读 · 0 评论 -
MySQL系统架构 读自《MySQL性能调优与架构设计》
一、MySQL逻辑模块组成 mysql可以看成是二层架构,第一层叫SQLLayer,这一部分主要功能是完成mysql数据库系统处理底层数据之前的所有的准备工作,包括权限判断、sql解析、执行计划优化、querycache的处理等; 第二层是存储引擎层(StorageEngineLayer),这一层才是数据库系统数据存取操作的实现,是由多种存储引擎共同完成。看起来结构简单,...原创 2019-03-18 15:15:00 · 368 阅读 · 0 评论 -
读书笔记:Mysql实战45讲 (1-10讲)
总结一下:这本书都讲解了那些知识点:增、删、改、查 底层实现和优化索引:底层数据结构实现、聚簇索引(主键索引)、二级索引(索引、联合索引、前缀索引、唯一索引)使 用方法和底层实现Mysql锁的使用:表锁、行锁、全局锁 事务MySQL上线后的快速优化(饮鸩止渴)的办法MySQL主从一致和高可用优化解决办法MySQL的语法:count,join,o...原创 2019-04-02 14:56:31 · 1243 阅读 · 0 评论 -
mysql的共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)的关系
一.S锁和X锁:S锁和X锁都属于行数二.意向锁:表锁,相互兼容,表明“某个事务持有了锁、或准备去持有锁”1、意向锁的存在是为了协调行锁和表锁的关系,支持多粒度(表锁与行锁)的锁并存。2、1)意向共享锁(IS锁):事务在请求S锁前,要先获得IS锁2)意向排他锁(IX锁):事务在请求X锁前,要先获得IX锁3、例子:事务A修改user表的记录r,会给记录r上一把行级的排...原创 2019-04-11 18:13:11 · 5107 阅读 · 2 评论 -
读书笔记:Mysql实战45讲 (11-21讲)
11、怎么给字符串加索引 比如email这个字段,如果email字段没有索引,那么这个语句只能做全表扫描 mysql支持前缀索引,所以可以定义字符串一部分为索引。 alter table s add index index1(email); alter table s add index index2(em...原创 2019-05-13 10:09:39 · 904 阅读 · 2 评论 -
MySQL InnoDB 索引原理
InnoDB是 MySQL最常用的存储引擎,了解InnoDB存储引擎的索引对于日常工作有很大的益处,索引的存在便是为了加速数据库行记录的检索。以下是我对最近学习的知识的一些总结,以及对碰到的以及别人提到过的问题的一些分析,如有错误,请指正,我会及时更正。目录InnoDB表结构B树与B+树聚簇索引和二级索引SQL执行顺序SQL优化建议一些问题分析参考资料1. In...转载 2019-04-03 17:48:23 · 247 阅读 · 0 评论 -
读书笔记:Mysql实战45讲 (22-35讲)
22、MySQL有哪些 饮鸩止渴 提高性能的办法? 场景: 业务高峰期,生产环境的MySQL压力太大,没法正常响应,需要短期内、临时性地提高一些性能。但,如果是无损的方案的话,肯定不需要等到这个时候才上场 短连接风暴: 正常的短连接模式就是连接到数据库,执行很少的SQL语句就断开,下次需要的时候再建立连接的过程,成本是很高的。除了正常的网络连接三次握手外,还要...原创 2019-04-13 15:34:42 · 3483 阅读 · 0 评论 -
浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景一、相关名词|--表级锁(锁定整个表)|--页级锁(锁定一页)|--行级锁(锁定一行)|--共享锁(S锁,MyISAM 叫做读锁)|--排他锁(X锁,MyISAM 叫做写锁)|--悲观锁(抽象性,不真实存在这个锁)|--乐观锁(抽象性,不真实存在这个锁)二、InnoDB与MyISAMMysql 在5...原创 2019-04-15 11:42:15 · 375 阅读 · 0 评论 -
数据库分库分表思路
一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...转载 2019-05-22 18:23:28 · 480 阅读 · 0 评论 -
MySQL中的读锁和写锁
转载自http://www.hollischuang.com/archives/1728在数据库的锁机制中介绍过,数据的锁主要用来保证数据的一致性的,数据库的锁从锁定的粒度上可以分为表级锁、行级锁和页级锁。在我的博客中重点介绍过MySQL数据库的行级锁。这篇文章主要来介绍一下MySQL数据库中的表级锁。本文提到的读锁和写锁都是MySQL数据库的MyISAM引擎支持的表锁的。而对于...转载 2019-03-20 10:50:39 · 730 阅读 · 0 评论 -
mysql执行sql语句过程
流程概述 mysql得到sql语句后,大概流程如下: 1.sql的解析器:负责解析和转发sql 2.预处理器:对解析后的sql树进行验证 3.查询优化器:得到一个执行计划 4.查询执行引擎:得到数据结果集 5.将数据放回给调用端。流程图如下所示:回到顶部分发器及缓存阶段 首先,如果系统的缓存功能开启着的话,sql语句进入mysql后,sql...转载 2019-03-14 11:32:16 · 311 阅读 · 0 评论 -
MYSQL引擎的锁对比
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会...原创 2018-03-19 23:47:55 · 291 阅读 · 1 评论 -
MYSQL的事务详解
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 四大特征:(1)原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。(2)一致性事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。...原创 2018-12-22 12:58:51 · 198 阅读 · 0 评论 -
MYSQL中的那些锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。行级锁行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但...原创 2018-03-19 00:28:27 · 341 阅读 · 0 评论 -
为什么Mysql用B+树做索引而不用B-树
先从数据结构的角度来答。 题主应该知道B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。这就决定了B+树更适合用来存储外部数据,也就是所谓的磁盘数据。从Mysql(Inoodb)的角度来看,B+树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存...原创 2018-03-12 18:46:38 · 12842 阅读 · 3 评论 -
MySQL 经典面试题(名词得概念)
1 存储过程什么是存储过程 存储过程是一些编译好的SQL语句因为系统在调用SQL的时候比较浪费时间,所以之前先将一些基本的额SQL语句代码进行编译(对单表或多表的增删改查),然后再给代码取一个名字,在需要这个功能时去调用它就可以了。优缺点存储工程是编译后的代码 效率高 存储过程代替SQL语句,降低网络通信 在一定的程度确保数据安全2 索引索引是什么索引是对数据库中一或多个列...原创 2018-03-07 11:21:38 · 470 阅读 · 1 评论 -
整理自《高性能 MySQL》
存储引擎1. InnoDBInnoDB 是 MySQL 的默认事务型引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。内部做了很多优化,包括从磁盘读取数据时采用的可预测性读,能够自动在内存中创建 hash 索引以加速读操作...原创 2018-03-03 13:52:25 · 403 阅读 · 0 评论 -
总结面经中常考的MYSQL面试问题(一)
1. 如何设计一个高并发的系统① 数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引的优化② 使用缓存,尽量减少数据库 IO③ 分布式数据库、分布式缓存④ 服务器的负载均衡2. 锁的优化策略① 读写分离② 分段加锁③ 减少锁持有的时间④ 多个线程尽量以相同的顺序去获取资源等等,这些都不是绝对原则,都要根据情况,比如不能将锁的粒度过于细化,不然可能会出...原创 2018-03-02 11:18:18 · 18820 阅读 · 5 评论 -
轻松理解MYSQL MVCC 实现机制
这个属于mysql的扩展,虽然不是必考,但是我看过有几个面经出现过,如果你知道些的话,肯定是面试官对你的加分项 1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用...转载 2018-03-02 11:15:18 · 316 阅读 · 0 评论 -
MySql 执行计划
1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。2)、select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有子查询的...转载 2019-03-14 11:31:06 · 792 阅读 · 0 评论 -
分布式事务
1、什么是分布式事务分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务;2、分布式事务产生的原因2.1、数据库分库分表在单库单表场景下,当业务数据量达到单库单表的极限时,就需要考虑分库分表,将之前的单库单表拆分成多库多表;分库分表之后,原来在单个数据库上的事务操作,可能就变成跨多个数据库的操作,此时就需要使用分布式事务; 在这种场景下,事务的提交会...原创 2019-06-03 11:21:15 · 324 阅读 · 1 评论