青云博客 记录、分享

为什么MySQL要默认使用RR隔离级别?

隔离级别的划分 SQL-92 标准定义了 4 种隔离级别,从低到高依次为: 读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Reads)、序列化(Serializable)

詹学伟 Published on 2024-04-22

分享7种SQL的进阶用法

前言 还只会使用SQL进行简单的insert、update、detele吗?本文给大家带来7种SQL的进阶用法,让大家在平常工作中使用SQL简化复杂的代码逻辑。 1.自定义排序(ORDER BY FIELD) 在MySQL中ORDER BY排序除了可以用ASC和DESC之外,还可以使用自定义排序方式

詹学伟 Published on 2024-04-22

添加索引真的不会锁表吗?

1.MySQL DDL执行方式 MySQL5.5以及之前的版本,通常更改数据表结构操作(DDL)会阻塞对表数据的增删改操作(DML)。 MySQL5.6提供Online DDL之后可支持DDL与DML操作同时执行,降低了DDL期间对业务延迟带来的影响。 2.Online ddl: 概念: 在不中断现

詹学伟 Published on 2024-04-22

分表后非分片键的查询、排序怎么处理

在使用分表后,非分片键的查询和排序可以通过以下方式进行处理: 联合查询:如果需要执行涉及多个分表的查询,可以使用联合查询(UNION)或者连接查询(JOIN)来合并结果。将查询条件应用到对应的分表,然后将结果联合起来返回给用户。 扫描所有分表:如果查询涉及到的数据无法通过分片键进行过滤,那么可能需要

詹学伟 Published on 2024-04-22

数据库 cpu 飙升,你会如何处理

当MySQL数据库的CPU使用率飙升时,可能是由于以下几个原因导致的: 查询性能问题:某些查询可能没有被正确地优化,导致查询执行时间过长,从而占用大量的CPU资源。可以通过查看慢查询日志和执行计划来分析问题查询,并进行索引优化、重写查询语句或调整数据库配置等方式来改善查询性能。 数据库连接问题:如果

詹学伟 Published on 2024-04-22

高并发场景下,如何安全修改同一行数据

在高并发情况下,多事务安全修改同一行数据可以采用以下方法: 乐观锁:在数据表中添加一个版本号(或者时间戳)字段,每次更新数据时都会检查该字段的值。当多个并发的请求同时修改同一行数据时,只有一个请求能够成功执行更新操作,其他请求需要重新检查数据是否被修改过。如果数据没有被修改,那么它们可以重新尝试更新

詹学伟 Published on 2024-04-22

一条SQL的执行过程是怎样的

一条 SQL 的执行过程可以大致分为以下几个步骤: 连接器: 客户端与数据库建立连接,并发送 SQL 语句给数据库服务。 连接器验证客户端的身份和权限,确保用户有足够的权限执行该 SQL 语句。 查询缓存:

詹学伟 Published on 2024-04-22

Binlog有几种录入格式与区别

MySQL的Binlog有三种录入格式,分别是Statement格式、Row格式和Mixed格式。它们的主要区别如下: Statement格式:

詹学伟 Published on 2024-04-22

说下你对分库分表的理解

MySQL的分库分表拆分策略通常包括垂直拆分和水平拆分两种方式。下面我将介绍这两种策略以及分库分表面临的问题和解决方案。 水平切分:水平切分又称为 Sharding,它是将同一个表中的记录拆分到多个结构相同的表中。当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同

詹学伟 Published on 2024-04-22

如何解决MySQL死锁问题

MySQL在并发环境下可能会出现死锁问题。死锁是指两个或多个事务互相等待对方释放资源,导致无法继续执行的情况。 解决死锁问题的方法通常有以下几种: 调整事务隔离级别:通过将事务隔离级别降低为读未提交(或读已提交,可以减少死锁的发生概率。但是要注意隔离级别的降低可能引发脏读、不可重复读等数据一致性问题

詹学伟 Published on 2024-04-22
Previous Next