MySQL深入:B+树的演化和操作
1. 二叉查找树在二叉查找树中,左子树的键值总是小于根的键值,右子树的键值总是大于根的键值,因此可以通过中序遍历得到键值的排序输出。对上图进行中序遍历(左-根-右)后输出:2、3、5、6、7、8对图9-5的这棵二叉树进行查找,如查找键值为5的记录,先找到根,其键值是6,6大于5,因此查找6的左子树,找到3;而5大于3,再找右子树……一共找了3次。如果按2、3...
使用 python 世界港口插入到 mysql
使用 python 将世界港口插入到 mysql#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = "leo" __time__ = "2018-07-05" import requests from lxml import etree import pymysql # 打开数据库连接...
PHP 8.1: MySQLi: 执行时绑定
PHP 8.1 起,MySQLi 扩展的 mysqli_stmt_execute 函数及 mysqli_stmt::execute 方法(别名) 接收一个 $params 参数。如果传入参数,传入的值会被当作字符串绑定到语句中。此前,参数化的 SQL 查询需要调用 bind_param 显式绑定变量:$statement = $db->prepare(...)
故障分析 | 从慢日志问题看 MySQL 半一致性读的应用场景
背景某系统执行更新操作发现很慢,发现有大量慢日志,其中 Lock time 时间占比很高,MySQL 版本为 5.7.25,隔离级别为 RR。
如何在 Laravel 中找到最慢的查询
你的网站慢吗?加载需要很长时间吗?用户是否抱怨它几乎无法使用 ?您应该检查您的数据库查询。我将向您展示一种轻松分析所有数据库查询的简洁方法。当然,您的网站速度慢的原因有很多,但最常见的原因之一是数据库查询速度慢。但是在 laravel 中,我们(大多数时候)不使用 SQL 从数据库中获取数据,我们使用 Eloquent ORM 和 查询构建器 ,这有时会导致...
数据库外键约束的作用
外键是该表是另一个表之间联接的字段外键必须为另一个表中的主键;外键的用途是确保数据的完整性。它通常包括以下几种:实体完整性,确保每个实体是唯一的(通过主键来实施)域完整性,确保属性值只从一套特定可选的集合里选择关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值FOREIGN...
数据库 Auto Increment 的实际问题
本文中,我将展示我以后将在 Postgres 和 MySQL 中避免使用 auto-increment 自增长字段的两个原因。我更愿意使用 UUID 字段除非有非常好的不使用的理由。› MySQL 8.0 auto-increment ID 重用 如果您运行的是旧版本的MySQL,那么自动递增的ID可能会被重复使用。让我们看看这个动作。$ docker...
SQL 性能优化:慢索引-2
前面章节介绍了如何通过修改现有字段的索引顺序获得好处,不过这一示例考量的只有两个 SQL 语句。然而,修改索引可能影响所索引的表的所有查询。本文解释了数据库如何选择索引并演示了修改现有索引可能产生的副作用
SQL 性能解析:SQL慢索引 -1
尽管有树遍历的效率,还是存在索引搜索不如预期那样快的情况。长期以来,这种矛盾助长了“未生成索引”的神话。这个神话将重建索引作为神奇的解决方案。<神话篇>对这一神话和其他神话做了更详细的描述。目前,您可以理所当然地认为,从长远来看,重建索引并不能提高性能。即使在使用索引时,琐碎语句也可能很慢的真正原因可以在前面的部分的基础上解释。慢索引查询的第一个...
SQL 性能解析:SQL 索引解析
“索引使查询更快”是我见过的对索引最基础的解释。虽然这句话对索引最重要的一面做了很好的解释,但不幸的是,还不够充分。本文将以不那么粗浅的,也没那么深入细节的方式描述索引结构。它只是为理解SQL性能方面提供了足够视野。索引是数据库中的一个独特的结构,使用 create index 语句创建。它需要自己的硬盘空间,并持有一份索引的表格数据的副本。这意味着索引是纯...