修复 MySQL 8.4 的 "mysql_native_password is not loaded" 插件未加载错误
MySQL 8.4(截至 2024 年的最新 LTS 版本)中引入的一个主要变化是,默认情况下不再启用 “MySQL Native Password” 插件。此更改会影响使用 MySQL 数据库和 mysql_native_password 身份验证插件的 PHP 和其他应用。由于默认情况下不再加载 mysql_native_password 插件,因此 ...
什么是 “N+1 Select 查询问题”?
本文将研究 ORM 框架中的 N+1 查询问题。我们将从问题的概念性概述开始。还将讨论理论上可能的解决方案以及如何在实践中实现这些解决方案。让我们从头开始,了解我们为什么会遇到这个问题。我们知道 ORM 可以解决将堆中的实体映射到关系数据库中的 schema 对象问题。在关系数据库中,我们可以有外键,它表示对外键表的引用。它允许我们在 R...
使用 Laravel 创建 GraphQL API
Laravel 为构建 REST API 提供了一个干净的接口。Rest API 实际上是构建灵活且可扩展的 API 的方式。但这是有代价的,因为随着 API 的增长,API 返回的有效负载也会增加。这会导致性能下降,尤其是在应用程序有很多资源的情况下。这就是 GraphQL 的用武之地。Graphql 是一种查询语言和 API 运行时,由 Facebook...
数据库快速查询不总是更好
您可能认为快速数据库查询很好。您可能还认为数据库查询速度慢是不好的。除了你对数据库查询的所有这些“想法”之外,还有一种 Laravel 方法,如果你看过,你可能会认为你理解……但你也有可能不理解。最后一个可能是我的错;对不起。让我们挑战一下你对查询的想法,看看我们是否不能解决我带来的 Laravel 函数混乱。慢查询就不好码?有些查询本身就很慢,并且尽可能地...
MySQL深入:B+树的演化和操作
1. 二叉查找树在二叉查找树中,左子树的键值总是小于根的键值,右子树的键值总是大于根的键值,因此可以通过中序遍历得到键值的排序输出。对上图进行中序遍历(左-根-右)后输出:2、3、5、6、7、8对图9-5的这棵二叉树进行查找,如查找键值为5的记录,先找到根,其键值是6,6大于5,因此查找6的左子树,找到3;而5大于3,再找右子树……一共找了3次。如果按2、3...
在 Go 中如何使用 database/sql 来操作数据库
在现代软件开发中,数据库扮演着至关重要的角色,用于存储和管理应用程序的数据。针对不同的数据库系统,开发人员通常需要使用特定的数据库驱动来操作数据库,这往往需要开发人员掌握不同的驱动编程接口。在 Go 语言中,好在有一个名为 database/sql 的标准库,提供了统一的编程接口,使开发人员能够以一种通用的方式与各种关系型数据库进行交互。概念database...
故障分析 | 从慢日志问题看 MySQL 半一致性读的应用场景
背景某系统执行更新操作发现很慢,发现有大量慢日志,其中 Lock time 时间占比很高,MySQL 版本为 5.7.25,隔离级别为 RR。
数据库外键约束的作用
外键是该表是另一个表之间联接的字段外键必须为另一个表中的主键;外键的用途是确保数据的完整性。它通常包括以下几种:实体完整性,确保每个实体是唯一的(通过主键来实施)域完整性,确保属性值只从一套特定可选的集合里选择关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值FOREIGN...
数据库 Auto Increment 的实际问题
本文中,我将展示我以后将在 Postgres 和 MySQL 中避免使用 auto-increment 自增长字段的两个原因。我更愿意使用 UUID 字段除非有非常好的不使用的理由。 MySQL 8.0 auto-increment ID 重用 如果运行的是旧版本的MySQL,那么自动递增的ID可能会被重复使用。让我们看看这个动作..
SQL 性能优化:慢索引-2
前面章节介绍了如何通过修改现有字段的索引顺序获得好处,不过这一示例考量的只有两个 SQL 语句。然而,修改索引可能影响所索引的表的所有查询。本文解释了数据库如何选择索引并演示了修改现有索引可能产生的副作用