
MySQL SQL 优化
SQL 优化的核心目标是减少全表扫描、充分利用索引、降低数据库资源消耗,最终提升查询与写入效率。 高频 SQL 优化技巧 常见优化技巧 1、避免索引列使用函数,确保索引生效 问题本质:在索引列上直接使用函数(如日期函数、字符串函数),优化器通常无法利用该列上的普通 B-tree 索引,会退化为全表扫描。 反例(低效): 正例(高效): 建议:把函数操作转移到条件值上,而不是作用在索引列本身,让优化…

SQL 优化的核心目标是减少全表扫描、充分利用索引、降低数据库资源消耗,最终提升查询与写入效率。 高频 SQL 优化技巧 常见优化技巧 1、避免索引列使用函数,确保索引生效 问题本质:在索引列上直接使用函数(如日期函数、字符串函数),优化器通常无法利用该列上的普通 B-tree 索引,会退化为全表扫描。 反例(低效): 正例(高效): 建议:把函数操作转移到条件值上,而不是作用在索引列本身,让优化…

CAP 定理(也称 CAP 原则)是分布式系统设计的核心准则,由计算机科学家 Eric Brewer 提出。其核心结论为:分布式系统无法同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)。由于网络分区在分布式环境中几乎不可避免,工程上实际是在网络分区发生时,在一致性与可用性之间做取舍。 MySQL 作为常用的数据库系统…

如何确定 MySQL 是否处于运行状态 如何获取表内所有列的名称和类型 如何创建表和删除表 创建表使用 create table,删除表使用 drop table: 如何创建和删除数据库 如何查看当前数据库里有哪些用户 查询 mysql.user 表: 如何查看已创建的索引及索引类型等信息 如何查看数据库版本 也可以在 MySQL 客户端内执行 select version(); 查看。 MySQ…

src/config.php src/Rsa.php src/Base.php src/AliPay.php src/Notify.php src/Return.php 根目录入口:index.php(发起支付) 根目录入口:notify.php(异步通知) 根目录入口:return.php(同步跳转)

EXPLAIN 是 MySQL 中分析 SQL 执行计划的核心工具。它能模拟优化器执行 SQL 语句的过程,输出 SQL 的执行细节,例如是否使用索引、表连接的方式、数据扫描范围等。通过解读 EXPLAIN 的结果,我们可以快速定位 SQL 性能瓶颈——全表扫描、索引失效、不合理的连接顺序等——从而针对性地优化。 EXPLAIN 的使用方式 在需要分析的 SQL 语句前直接加上 EXPLAIN 即…

死锁 = 加锁顺序相反 + 循环等待。比如事务 A 先锁行 1 再等行 2,事务 B 先锁行 2 再等行 1,两人互相等,谁都走不下去。 InnoDB 会自动处理死锁:靠 wait-for graph 检测到环,立即回滚「代价较小」的一方,报错 1213 Deadlock found。所以死锁本身通常只让那一个事务失败,不是系统挂了。 处理总原则:紧急处置 → 定位问题 SQL → 定位加锁顺序 …

锁是数据库用来管理「多个事务并发访问同一份数据」的机制,也是数据库区别于普通文件系统的关键特性。没有锁,两个事务同时改同一行就会互相覆盖、读出脏数据。 MySQL 里锁的行为高度依赖存储引擎:MyISAM 只有表锁,InnoDB 支持行锁和表锁,因此下面以 InnoDB 为主展开。 各存储引擎的锁粒度 不同引擎支持的锁粒度不同: | 存储引擎 | 支持的锁 | | MyISAM | 表级锁 | |…

理解 PHP 不能只停留在「写几个函数」。一个 PHP 请求从被 Web 服务器接住,到最终输出响应,中间要经过一整套内核组件的协作,还会经历固定的生命周期阶段。本文将就 PHP 的源码构成、核心组件和生命周期串起来说一遍,并说明它们对日常开发(尤其是性能与常驻任务)的真实影响。 PHP 源码的目录结构 PHP 源码(可在 php/php-src 仓库查看)并不是一团代码,而是按职责分成了几个目录…

事务的定义 事务(transaction)是数据库里的一个操作序列,这些操作要么全部执行成功,要么全部不执行(全部撤销),不存在「只做一半」的中间状态。 事务通常以 BEGIN(或 START TRANSACTION)开始,以 COMMIT 提交或 ROLLBACK 回滚结束。MySQL 默认 autocommit 是开启的(每条语句自动提交),要体验事务需先 START TRANSACTION …

命名与注释 1、库 / 表 / 字段名用小写字母或数字,禁止数字开头 数据库名、表名、字段名一律小写字母加下划线,避免大小写混用带来的跨平台差异(Linux 下 MySQL 表名默认区分大小写,Windows 不区分,混用会在迁移时炸)。不要以数字开头,例如 goodscategory、agentoperate201812log。 2、名称要见名识意 字段和表名做到见名知意,能用 goodscat…