![](https://img-blog.csdnimg.cn/8454885ddd5a42489ed15d86eaaa283b.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 87
MySQL
汪了个王
学习知识,目光坚毅
展开
-
一文搞懂MySQL的MVCC原理及如何解决幻读
在之前的文章中详细的介绍了 MySQL 中的事务和隔离级别,在并发访问数据库造成的问题(脏读、不可重复读、幻读),而 MVCC 就是在尽量减少锁使用的情况下高效避免这些问题。原创 2021-12-15 23:06:14 · 5132 阅读 · 4 评论 -
一文了解 MySQL 中的锁
1. 数据库并发场景在高并发场景下,不考虑其他中间件的情况下,数据库会存在以下场景:读读:不存在任何问题,也不需要并发控制。读写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读。写写:有线程安全问题,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失。针对以上问题,SQL 标准规定不同隔离级别下可能发生的问题不一样:MySQL 四大隔离级别:隔离级别脏读不可重复读幻读READ UNCOMMITTED:未提交读可能发生可能发生可原创 2021-12-14 21:15:43 · 2485 阅读 · 0 评论 -
带你了解 MySQL 中的日志
一文了解redo log、undo log、binlog、errorlog、slow query log原创 2021-12-12 10:45:07 · 1318 阅读 · 2 评论 -
InnoDB 存储引擎介绍
1. MySQL 基础架构前面写过几篇 MySQL 的文章,大多是对一些基础概念的讲解,当我想去了解存储引擎的时候发现不知从何下手,或者说不知道如何开头,回头想想好像对 MySQL 的基础架构还不是特别熟悉,所以本文尽管是介绍 InnoDB 存储引擎,但也会大致讲解一下 MySQL 的基础架构。先看这样一张图(网上找的):可以看出 MySQL 最上层是连接组件。下面服务器是由连接池、管理工具和服务、SQL 接口、解析器、优化器、缓存、存储引擎、文件系统组成。看的懂吗?看不懂。没事,咱翻译一下:原创 2021-12-09 14:34:56 · 1916 阅读 · 0 评论 -
MySQL性能优化:SQL慢查询优化,索引优化,表优化
1. MySQL优化概述MySQL 优化是一个综合性的技术,在优化上存在着一个调优金字塔的说法,如下:很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的。比如硬件和 OS 调优,需要对硬件和 OS 有着非常深刻的了解,仅仅就磁盘一项来说,一般非 DBA 能想到的调整就是 SSD 盘比用机械硬盘更好,但其实它至少包括 了,使用什么样的磁盘阵列(RAID)级别、是否可以分散磁盘 IO、是否使用裸设备存放数据,使用哪种文件系统(目前比较推荐的是 XFS),操作系统的磁盘调度算法(目前比较推荐原创 2021-12-07 10:02:42 · 1378 阅读 · 6 评论 -
一文搞懂 MySQL 中的索引
1. 什么是索引MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。举一个例子,平时看任何一本书,首先看到的都是目录,通过目录去查询书籍里面的内容会非常的迅速,如下:书籍的目录是按顺序放置的,有第一章,第二章…,它本身就是一种顺序存放的数据结构,是一种顺序结构。但是如果我们要去图书馆找一本书怎么办?最好的方式就是有如下的的指引:从上面可见,整个索引结构是一棵倒挂着的树,其实它就是一种数据结构,这种数据结构比前面讲到的原创 2021-12-01 10:10:58 · 7074 阅读 · 16 评论 -
MySQL建立合理的数据类型
1. 概述MySQL 支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。2. 基本原则2.1 越小越好一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和 CPU 缓存,并且处理时需要的 CPU 周期也更少。但是要确保没有低估需要存储的值的范围,因为在的多个地方增加数据类型的范围是一个非常耗时和痛苦的操作。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范原创 2021-11-29 20:35:42 · 1082 阅读 · 0 评论 -
MySQL的事务和隔离级别
什么是事务事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位(不可再进行分割),由一个有限的数据库操作序列构成(多个DML语句,select语句不包含事务),要不全部成功,要不全部不成功。如 A 给 B 要划钱,A 的账户-1000 元, B 的账户就要+1000 元,这两个 update 语句必须作为一个整体来执行,不然 A 扣钱了,B 没有加钱这种情况就是错误的。那么事务就可以保证 A 、B 账户的变动要么全部一起发生,要么全部一起不发生。事务特性事务具有 4 个属性:原子性(atomic原创 2021-11-24 11:03:30 · 1674 阅读 · 6 评论 -
数据库三大范式
概述良好的表结构设计是高性能的基石,应该根据系统将要执行的业务查询来设计,这往往需要权衡各种因素。糟糕的表结构设计,会浪费大量的开发时间,严 重延误项目开发周期,让人痛苦万分,而且直接影响到数据库的性能,并需要花费大量不必要的优化时间,效果往往还不怎么样。在数据库表设计上有个很重要的设计准则,称为范式设计。三范式范式来自英文 Normal Form,简称 NF。要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求 得严格。满足这些规范的数据库是简洁的原创 2021-11-23 11:43:35 · 1861 阅读 · 0 评论 -
mysql过滤表中重复数据
原创 2021-03-23 21:50:47 · 270 阅读 · 0 评论