本专区由 数据库 团队提供资讯和技术支持,欢迎社区成员申请加入管理小组。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
本专区由 数据库 团队提供资讯和技术支持,欢迎社区成员申请加入管理小组。
索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样。所以说一个好的索引对数据库系统尤其重要,今天来说说MySQL索引,从细节和实际业务的角度看看在MySQL中B+树索引好处,以及我们在使用索引时需要注意的知识点。 一、合理利用索引 在工作中,我们可能判断数据表中的一个字段是不是需要加索引的最直接办法就是:这个字段会不会经常出现在我们的where条... 展开更多
### MySQL的主从复制 - 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的。 - 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步。 - 复制的功能不仅有利于构建高性能应用,同时也是高可用、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。 - 通过MySQL的主从复制来实现读写分离,相比单点数据库又读又写来说,提升了业务系统性能,优化了用户体验。 - 另外通过主从复制实现了数... 展开更多
文章目录 前言 一、控制面板卸载 MySQL 二、删除 MySQL 数据库安装文件夹 三、打开注册表编辑器 四、删除残留注册表文件 五、删除系统盘残留数据文件 总结 前言 如果我们 MySQL 数据库密码遗忘需要重新安装 MySQL 数据库时,就需要先卸载掉本地的文件。而 MySQL 并不是像其他应用程序一样容易卸载,这个步骤是相当繁琐的,若想完全卸载不留痕迹,就需要对注册表信息进行详细的清理,所以整理以下步骤供大家参考。 一、控制面板卸... 展开更多
一、初识MGR 相信很多人对MGR这个词比较陌生,其实MGR(全称 MySQL Group Replication 【MySQL 组复制】)是Oracle MySQL于2016年12月发布MySQL 5.7.17推出的一个全新高可用和高扩展的解决方案。具备以下特性: 高一致性,基于原生复制及Paxos协议的组复制技术,并以插件的方式提供,提供一致数据安全保证; 高容错性,只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先... 展开更多
在MySQL中,时间是咱们用到最多的类型,建表时,对于时间字段类型的选择,你是如何选择的呢?有人会说timestamp,也有人会说datetime,那么我们到底如何选择呢,它们又有什么区别?今天就和大家一起来看看。 一、MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME() LOCALTIMESTAMP LOCALTIMESTAMP() 二、关于TIMESTAMP和DATETIME的比较 一个完... 展开更多
@[toc] 很多小伙伴对 MySQL 的隔离级别一直心存疑惑,其实这个问题一点都不难,关键看怎么讲!单纯的看理论,绝对让你晕头转向,但是,如果我们通过几个实际的 SQL 来演示一些,大家就会发现这玩意原来这么简单! 今天松哥想通过几个简单的案例,来和大家演示一下 MySQL 中的事务隔离级别问题。 ## 1. 理论 MySQL 中事务的隔离级别一共分为四种,分别如下: - 序列化(SERIALIZABLE) - 可重复读(REPEATABLE READ) - 提交读(... 展开更多
![](https://img-blog.csdnimg.cn/434518d326d343d79429b3ae939a933c.png) 作者:小傅哥 博客:[https://bugstack.cn](https://bugstack.cn) >沉淀、分享、成长,让自己和他人都能有所收获!😄 ## 一、前言 `什么?Java 面试就像造火箭🚀` ![](https://img-blog.csdnimg.cn/img_convert/c77ee71d5e901f949dc4c7fdeefceb5d.png) **单纯了!** 以前我也一直想 Java 面试就好好面试呗,*嘎哈么*总考一些工作中也用不到的玩意,... 展开更多
不知道大家有没有想过下面这件事? > 我们平时调用 `DELETE` 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsvfwy3yyvj30d20b4wev.jpg) 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情况下,如果事务A删除了 `id=1` 的数据,同时事务B又去读取 `id=1` 的数据,如果这条数据真的被删除了,那 MVCC 拿啥数据返回给用户呢? 没错,这就需要了解一... 展开更多
之前的文章简单的介绍了 MySQL 的事务隔离级别,它们分别是:读未提交、读已提交、可重复读、串行化。这篇文章我们就来探索一下 MySQL 事务隔离级别的底层原理。 > 本篇文章针对 InnoDB 存储引擎 ### 多版本并发控制 我们知道,读未提交会造成脏读、幻读、不可重复读,读已提交会造成幻读、不可重复读,可重复读可能会有幻读,和串行化就不会有这些问题。 那 InnoDB 到底是怎么解决这些问题的呢?又或者,你有没有想过造成脏读、... 展开更多
你好,我是yes。 前段时间写了一篇[关于 MySQL 锁的文章](http://mp.weixin.qq.com/s?__biz=MzkxNTE3NjQ3MA==&mid=2247490365&idx=1&sn=5e96739ce949eaa9fd8435834494cfc6&chksm=c1627644f615ff5248b4221480b3bb6df42cdf076c86dc228a062d99d6035127d61e9ae8ffb7&scene=21#wechat_redirect),一些小伙伴们在阅读之后产生了一些疑问,这些问题还挺有代表性的,所以在这里做个实验,来用事实探究一番。 那篇文章提到了记录锁(Rec... 展开更多
前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用,在读取缓存这方面基本都是一致的,大概都是按照下图的流程进行操作: 但是在更新缓存方面,是更新完数据库再更新缓存还是直接删除缓存呢?又或者是先删除缓存再更新数据库?在这一点上就值得探讨了。 一致性方案 在实际项目开发中需要保证数据库和缓存中的数据一致,否则人家充值了100块,不断刷新却还是显示0.01元,岂不是尴尬?从理论上来说,为缓存设置过期时间是... 展开更多
MySQL 中多版本并发控制(MVCC),是现代数据库引擎实现中常用的处理读写冲突的手段,MVCC 作为 MySQL 高级应用特性,目的在于提高数据库高并发场景下的吞吐性能。 一、MVCC出现背景是什么? 事务的4个隔离级别以及对应的3种异常: 脏读:一个事务读取到了另外一个事务没有提交的数据; 不可重复读:在同一事务中,两次读取同一数据,得到内容不同; 幻读:同一事务中,用同样的操作读取两次,得到的记录数不相同。 在 MySQL 中... 展开更多
依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯。同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论。 但是过于方便的分享也让知识变得五花八门,很容易让人接收到错误的信息。这些错误最多的都是因为技术发展迅速,而且没有空闲时间去及时更新已经发布的内容所导致。为了避免给后面学习的人造成误解,我们今天来看一看 MySQL 设计规范中几个常见... 展开更多
这应该是 MySQL 原理中最底层的部分了,我们存在 MySQL 中的数据,到底在磁盘上长啥样。你可能会说,数据不都存储在**聚簇索引**中吗?但很遗憾,你并没有回答我的问题。我会再问你,那聚簇索引在磁盘上又长啥样? 就像 Redis 的 RDB 文件,最终落在磁盘上就是一个真真切切的 `dump.rdb` 文件,而 MySQL 就显得有点迷,我们只知道通过 SQL 去拿数据,并不知道数据最终是以什么方式进行存储的。当然,了解其底层的存储逻辑,并不... 展开更多
平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间。在数据库中存储时间的方式有很多种,比如 MySQL 本身就提供了日期类型,比如 DATETIME,TIMESTAMEP 等,我们也可以直接存储时间戳为 INT 类型,也有人直接将时间存储为字符串类型。 那么到底哪种存储时间的方式更好呢? ## 不要使用字符串存储时间类型 这是初学者很容易犯的错误,容易直接将字段设置为 VARCHAR 类型,存储"2021-01-01 00:00:00"这样的... 展开更多