编程 20 / 627 题
Mysql 分库分表
本质与目的分库:将单数据库拆分为多个物理库(如order_db→order_db1、order_db2),解决单库IO/CPU瓶颈。分表:将大表数据拆分到多个物理表(如user→user_0~user_3),降低单表数据量,提升查询效...
说下你对分库分表的理解
分库分表是一种常用的数据库水平扩展(Scale...
MySQL中的慢查询日志及其如何使用。
MySQL的慢查询日志是用来记录执行时间超过设定阈值的SQL语句。使用方法包括:1、开启慢查询日志: 通过设置slow_query_log参数为1来开启。2、设置阈值:...
关系数据库的主要特点是什么?
描述关系数据库的主要特性,并提供一个关系数据表的示例。关系数据库的主要特点是数据以表格形式存储,表格之间通过关系连接。这些关系可以是一对一、一对多或多对多。数据的组织方式使得数据操作变得直观而高效。例如,一个学生和课程的关系表可能如下...
MySQL中如何处理和优化重复数据
处理重复数据是保持数据库整洁和性能的重要手段,避免数据冗余。可以使用多种方法检测和优化重复数据:使用DISTINCT关键字查询去重的结果。利用GROUP...
为什么不建议在 MySQL 中使用 UTF-8
“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。当然,他们并没有对新的字符集广而告之(可能是...
Mysql 的共享锁和排他锁
共享锁:共享锁又称“读锁”,允许多个事务同时读取同一数据行,但禁止任何事务修改该数据。核心目标:支持高并发读取,确保读取过程中数据不被修改(防止脏读)。多事务需并发读取同一数据(如报表查询、数据统计)。START...
mysql慢查询的优化
开启慢查询日志启用日志:动态设置或修改配置文件(my.cnf)SET GLOBAL slow_query_log = ON; -- 动态开启 SET GLOBAL long_query_time = 1; --...
MySQL事务中的乐观锁与悲观锁
-- 1. 开启事务并加行锁(需索引,否则锁表) BEGIN; SELECT * FROM accounts WHERE id = 1 FOR UPDATE; -- 获取排他锁[9,11](@ref) -- 2....
explain优化
在 SQL 语句前添加 EXPLAIN 即可:EXPLAIN SELECT * FROM users WHERE id = 1; EXPLAIN EXTENDED:额外显示优化器重构后的查询语句(通过 SHOW WARNINGS...
非聚簇索引
索引与数据分离存储:叶子节点存储索引键值 + 指向数据行的指针(InnoDB中为主键值,MyISAM中为物理地址)。多索引支持:每表可创建多个非聚簇索引(如CREATE INDEX idx_name ON...
聚簇索引
聚簇索引 = 按书名顺序存放的书架叶子节点存整本书(而非指针)假设图书馆的书架按照书名拼音顺序摆放书籍(例如《阿Q正传》在左,《西游记》在右)。当你找到《红楼梦》的位置时,书架上直接就是这本书本身,翻开就能读内容。→...
索引的注意点
索引虽然是sql性能优化的利器,但是索引的维护也是需要成本的,所以创建索引,也要注意:索引应该建在查询应用频繁的字段。在用于where判断、order排序和join的(on)字段上创建索引。索引的个数应该适量。索引需要占用空间;更新时...
索引失效
违反最左前缀匹配原则(复合索引失效)场景:复合索引 (a, b, c),查询条件为 WHERE b=1 AND c=2 或 WHERE c=2。原理:B+Tree索引按定义顺序构建,缺失最左列无法定位索引树入口。解决:...
锁的分类
MySQL中的锁机制包括:1、表级锁: 锁定整个表,实现简单,开销小,但并发能力弱。2、行级锁: 锁定单独的行,开销大,但并发能力强。3、页面锁: 锁定相邻的一组行,是表级锁和行级锁的折中。4、意向锁:...
mysql死锁干预与优化
干预查看死锁日志:SHOW ENGINE INNODB STATUS; -- 分析LATEST DETECTED DEADLOCK部分[9,10](@ref) 终止事务阻塞KILL <事务ID>; --...
mysql死锁
MySQL死锁是数据库高并发场景下的常见问题,指两个或多个事务因争夺资源而互相等待,导致所有事务均无法推进的现象。事务A持有资源1并请求资源2,事务B持有资源2并请求资源1,形成循环等待链,双方均阻塞。满足四个必要条件:互斥、请求与保...
mysql锁-innodb锁
记录锁(Record Lock)锁定索引记录(如 WHERE id=1),防止其他事务修改目标行。间隙锁(Gap Lock)作用:锁定索引区间(如 id BETWEEN 5 AND...
mysql锁机制-按颗粒度
表级锁(Table-Level Lock)特点:锁定整张表,开销小、加锁快,不会死锁,但并发度低。适用场景:全表操作(如 ALTER TABLE、批量导入数据)。MyISAM 引擎默认锁(读锁兼容,写锁独占)。LOCK TABLES...
什么是脏读
脏读(Dirty...