数据库技术

无论什么时候,只要存在多个连接在同一时刻修改数据,都会涉及到并发控制的问题。MySQL实现了两个层面的并发控制:服务层和引擎层。 锁分类 按照使用场景分类 共享锁:共享锁(shared lock)也称为读锁(read lock)。共享锁是共享的,或者说是相互不阻塞的。多个连接在同一时刻可以同时读取同一个资源,而不相互干扰。 排他锁:排他锁(exclusive lock)也称为写锁(write lock)。写锁是排他的,也就是一个写锁会

2022-10-27  433
数据库技术

不少朋友留言问MySQL索引底层的实现,让我讲讲B+树。知其然,知其所以然,讲懂B+树其实不难,今天更多聊聊“数据库索引,为什么设计成这样”。 问题1. 数据库为什么要设计索引? 图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则: 一楼放历史类,二楼放文学类,三楼放IT类… IT类,又分软件类,硬件类… 软件类,又

2022-10-27  410
数据库技术
数据库技术

关于学习这件事情宁可花点时间系统学习,也不要东一榔头西一棒槌,都说学习最好的方式就是系统的学习,希望看完本文会让你对 MySQL 事物有一定的理解,数据库版本为 8.0。 图片来自 Pexels 什么是事物 事物是独立的工作单元,在这个独立工作单元中所有操作要么全部成功,要么全部失败。 也就是说如果有任何一条语句因为崩溃或者其它原因导致执行失败,那么未执行的语句都不会再执行,已经执行的语句会进行回滚操作,这个过程被称之为事物。 例:最近

2022-10-27  369
数据库技术

1、为什么要进行数据库收缩? SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。从而节省服务器的存储的成本。 2、数据库收缩的原理 官方解释:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。在文

2022-10-27  387
数据库技术

当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信。客户端必须使用数据库连接来发送命令和接收应答、数据。通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了。可以查阅程序语言手册来获知通过何种方式使用短连接、长连接。 1. 短连接 短连接是指程序和数据库通信时需要建立连接,执行操作后,连接关闭。短连接简单来说就是每一次操作数据库,都要打开和关闭数据库连接,基本步骤是:连接→数据传输&r

2022-10-27  358
数据库技术

MySQL的字符集从latin1经过utf8 到utf8mb4 ,算是经历曲折的路线。特别是从使用一个字符集变更另一个字符集时,实践当中都非常无奈,不是没办法,而是麻烦。到了MySQL8.0多出了一个字符集utf8mb4_0900_*的字符集,有必要了解一下。 1. 字符集基础 先了解下MySQL字符集都有哪些地方使用,进入数据库VARIABLES参数一目了然: mysql>SHOWVARIABLESWHEREvariable_

2022-10-27  396
数据库技术

背景 该问题来自某客户,据描述,他们在部署 MySQL 主从复制时,有时候仅在主库上创建复制用户,有时候主从实例上都会去分别创建复制用户,发现这两种方式都可以成功建立复制。针对这一现象,进行了一轮验证,来观察采用不同方式创建复制用户对主从复制的影响。 通常来说,用得较多的方式是在搭建主从复制前,先在主库创建好复制用户,然后做一个 Xtrabackup 物理全备,再拿到从库上恢复并搭建主从。除此以外,还有哪些方式呢?分别对主从复制有哪些影

2022-10-27  373
数据库技术

相信大家对join,where 以及子查询等等操作已经非常熟悉,在此基础上如果对于mysql的用户自定义变量再熟练掌握了,那么对于数据分析来说就又多了一个工具。虽然这个功能不是经常用,但是学来扩展一下自己的知识库也是好的,免得书到用时方恨少。今天有机会请到了自定义变量本量来给大家现场说法,咱天就唠叨唠叨自定义变量是个啥,是咋工作的。 1.自定义变量—自我介绍 大家好,我是mysql自定义变量,和其他的自定义变量一样,你们可以

2022-10-27  378
数据库技术

最近有一个服务出现了报警,已经让我到了忍无可忍的地步,报警信息如下: Metric:mysql.innodb_row_lock_waitsTags:port=4306,service=xxxxdiff(#1):996>900 大概的意思是有一个数据库监控指标innodb_row_lock_waits 目前超出了阈值900 但是尴尬的是,每次报警后去环境中查看,得到的信息都很有限,慢日志,错误日志里面都没有充分的信息可以分析,一来

2022-10-27  407