数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

加载中
置顶
发表了博客
2021/12/06 15:55

MySQL索引的坑,谁踩谁知道……

索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样。所以说一个好的索引对数据库系统尤其重要,今天来说说MySQL索引,从细节和实际业务的角度看看在MySQL中B+树索引好处,以及我们在使用索引时需要注意的知识点。 一、合理利用索引 在工作中,我们可能判断数据表中的一个字段是不是需要加索引的最直接办法就是:这个字段会不会经常出现在我们的where条... 展开更多

收藏 108
17
置顶
架构师
发表了博客
2021/09/16 22:09

MySQL技术专题(6)这也许是你的知识盲区-MySQL主从架构以及[半同步机制]

### MySQL的主从复制 - 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的。 - 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步。 - 复制的功能不仅有利于构建高性能应用,同时也是高可用、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。 - 通过MySQL的主从复制来实现读写分离,相比单点数据库又读又写来说,提升了业务系统性能,优化了用户体验。 - 另外通过主从复制实现了数... 展开更多

收藏 7
0
置顶
程序员
发表了博客
2021/09/18 10:25

MySQL 是如何实现 ACID 的?

来源:https://llc687.top/131.html > 本文主要探讨MySQL InnoDB 引擎下ACID的实现原理,对于诸如什么是事务,隔离级别的含义等基础知识不做过多阐述。 ## ACID MySQL 作为一个关系型数据库,以最常见的 InnoDB 引擎来说,是如何保证 ACID 的。 - **(Atomicity**)**原子性:** 事务是最小的执行单位,不允许分割。原子性确保动作要么全部完成,要么完全不起作用; - **(Consistency)一致性:** 执行事务前后,数据保持一致;... 展开更多

收藏 16
4
置顶
程序员
发表了博客
2021/09/13 17:45

你还在 Docker 中跑 MySQL?恭喜你,可以下岗了!

来源:toutiao.com/i6675622107390411276/ ![](https://oscimg.oschina.net/oscnet/up-e20baf006d0dc123c902742b33a3f36a9bd.png) 容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以:**数据库 MySQL 是否需要容器化**? 认真分析大家的各种观点,发现赞同者... 展开更多

收藏 0
0
置顶
架构师
发表了博客
2021/08/31 17:45

MySQL 学习三:来教你如何完全卸载掉本地“头大的” MySQL 数据库!

文章目录 前言 一、控制面板卸载 MySQL 二、删除 MySQL 数据库安装文件夹 三、打开注册表编辑器 四、删除残留注册表文件 五、删除系统盘残留数据文件 总结 前言 如果我们 MySQL 数据库密码遗忘需要重新安装 MySQL 数据库时,就需要先卸载掉本地的文件。而 MySQL 并不是像其他应用程序一样容易卸载,这个步骤是相当繁琐的,若想完全卸载不留痕迹,就需要对注册表信息进行详细的清理,所以整理以下步骤供大家参考。 一、控制面板卸... 展开更多

收藏 1
0
置顶
架构师
发表了博客
2021/08/31 09:07

MySQL中timestamp和datetime,你用的对么?

在MySQL中,时间是咱们用到最多的类型,建表时,对于时间字段类型的选择,你是如何选择的呢?有人会说timestamp,也有人会说datetime,那么我们到底如何选择呢,它们又有什么区别?今天就和大家一起来看看。 一、MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME() LOCALTIMESTAMP LOCALTIMESTAMP() 二、关于TIMESTAMP和DATETIME的比较 一个完... 展开更多

收藏 4
1
置顶
发表了博客
2021/08/30 16:55

四个案例看懂 MySQL 事务隔离级别

@[toc] 很多小伙伴对 MySQL 的隔离级别一直心存疑惑,其实这个问题一点都不难,关键看怎么讲!单纯的看理论,绝对让你晕头转向,但是,如果我们通过几个实际的 SQL 来演示一些,大家就会发现这玩意原来这么简单! 今天松哥想通过几个简单的案例,来和大家演示一下 MySQL 中的事务隔离级别问题。 ## 1. 理论 MySQL 中事务的隔离级别一共分为四种,分别如下: - 序列化(SERIALIZABLE) - 可重复读(REPEATABLE READ) - 提交读(... 展开更多

收藏 9
2
置顶
程序员
发表了博客
2021/08/12 14:48

浅谈 MySQL InnoDB 的内存组件

# 前言 `MySQL`中执行一条`SQL`语句,相应表数据的读写都是由存储引擎去做(**更新数据、查询数据**)。 在这个过程,存储引擎需要决策一些事情 - **数据是从内存查还是从硬盘查** - **数据是更新在内存,还是硬盘** - **内存的数据什么时候同步到硬盘** 所以存储引擎会按照内部逻辑与内存、硬盘交互。 ![](https://cdn.jsdelivr.net/gh/18702524676/CND5/image/mysql/02/01.png) 我们可以按需选择存储引擎,比如常见的 `InnoD... 展开更多

收藏 5
0
置顶
发表了博客
2021/08/11 14:04

MySQL 中删除的数据都去哪儿了?

不知道大家有没有想过下面这件事? > 我们平时调用 `DELETE` 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsvfwy3yyvj30d20b4wev.jpg) 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情况下,如果事务A删除了 `id=1` 的数据,同时事务B又去读取 `id=1` 的数据,如果这条数据真的被删除了,那 MVCC 拿啥数据返回给用户呢? 没错,这就需要了解一... 展开更多

收藏 10
5
置顶
发表了博客
2021/08/05 08:40

MySQL8索引篇:性能提升了100%!!

大家好,我是冰河~~ 今天我们一起来聊聊MySQL 8.x版本中新增的三大索引。MySQL 8.x中新增了三种索引方式,这三种索引方式直接让MySQL原地起飞了,如下所示。 隐藏索引 降序索引 函数索引 一、隐藏索引 1.隐藏索引概述 MySQL 8.0开始支持隐藏索引(invisible index),不可见索引。 隐藏索引不会被优化器使用,但仍然需要进行维护。 应用场景:软删除、灰度发布。 在之前MySQL的版本中,只能通过显式的方式删除索引,如果删除后发... 展开更多

收藏 13
0
置顶
发表了博客
2021/08/02 09:34

MySQL 到底是如何做到多版本并发的?

之前的文章简单的介绍了 MySQL 的事务隔离级别,它们分别是:读未提交、读已提交、可重复读、串行化。这篇文章我们就来探索一下 MySQL 事务隔离级别的底层原理。 > 本篇文章针对 InnoDB 存储引擎 ### 多版本并发控制 我们知道,读未提交会造成脏读、幻读、不可重复读,读已提交会造成幻读、不可重复读,可重复读可能会有幻读,和串行化就不会有这些问题。 那 InnoDB 到底是怎么解决这些问题的呢?又或者,你有没有想过造成脏读、... 展开更多

收藏 6
0
置顶
发表了博客
2021/07/26 13:57

这是十三个实验,扫到了关于MySQL锁的多个盲区!!

你好,我是yes。 前段时间写了一篇[关于 MySQL 锁的文章](http://mp.weixin.qq.com/s?__biz=MzkxNTE3NjQ3MA==&mid=2247490365&idx=1&sn=5e96739ce949eaa9fd8435834494cfc6&chksm=c1627644f615ff5248b4221480b3bb6df42cdf076c86dc228a062d99d6035127d61e9ae8ffb7&scene=21#wechat_redirect),一些小伙伴们在阅读之后产生了一些疑问,这些问题还挺有代表性的,所以在这里做个实验,来用事实探究一番。 那篇文章提到了记录锁(Rec... 展开更多

收藏 6
1
置顶
发表了博客
2021/07/23 09:23

MySQL和Redis如何保证数据一致性?

前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用,在读取缓存这方面基本都是一致的,大概都是按照下图的流程进行操作: 但是在更新缓存方面,是更新完数据库再更新缓存还是直接删除缓存呢?又或者是先删除缓存再更新数据库?在这一点上就值得探讨了。 一致性方案 在实际项目开发中需要保证数据库和缓存中的数据一致,否则人家充值了100块,不断刷新却还是显示0.01元,岂不是尴尬?从理论上来说,为缓存设置过期时间是... 展开更多

收藏 16
3
置顶
架构师
发表了博客
2021/07/17 09:03

值得收藏,揭秘 MySQL 多版本并发控制实现原理

MySQL 中多版本并发控制(MVCC),是现代数据库引擎实现中常用的处理读写冲突的手段,MVCC 作为 MySQL 高级应用特性,目的在于提高数据库高并发场景下的吞吐性能。 一、MVCC出现背景是什么? 事务的4个隔离级别以及对应的3种异常: 脏读:一个事务读取到了另外一个事务没有提交的数据; 不可重复读:在同一事务中,两次读取同一数据,得到内容不同; 幻读:同一事务中,用同样的操作读取两次,得到的记录数不相同。 在 MySQL 中... 展开更多

收藏 9
1
置顶
程序员
发表了博客
2021/07/15 14:35

MySQL 那些常见的错误设计规范

依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯。同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论。 但是过于方便的分享也让知识变得五花八门,很容易让人接收到错误的信息。这些错误最多的都是因为技术发展迅速,而且没有空闲时间去及时更新已经发布的内容所导致。为了避免给后面学习的人造成误解,我们今天来看一看 MySQL 设计规范中几个常见... 展开更多

收藏 11
0
置顶
程序员
发表了博客
2021/07/01 10:34

MySQL 中存储时间的最佳实践

平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间。在数据库中存储时间的方式有很多种,比如 MySQL 本身就提供了日期类型,比如 DATETIME,TIMESTAMEP 等,我们也可以直接存储时间戳为 INT 类型,也有人直接将时间存储为字符串类型。 那么到底哪种存储时间的方式更好呢? ## 不要使用字符串存储时间类型 这是初学者很容易犯的错误,容易直接将字段设置为 VARCHAR 类型,存储"2021-01-01 00:00:00"这样的... 展开更多

收藏 8
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
返回顶部
顶部
返回顶部
顶部