MySQL索引(二):覆盖索引、最左前缀原则与索引下推详解
MySQL系列文章
本文是MySQL索引系列的第二篇,接续前文《MySQL索引(一):从数据结构到存储引擎的实现》的基础知识,将深入探讨索引的高级特性和优化技巧。本文将通过实际案例,详细解析覆盖索引、最左前缀原则和索引下推这三个核心优化技术。
在数据库性能优化中,合理使用索引是最有效的手段之一。前文我们介绍了索引 ...
MySQL 基础架构(一):SQL语句的执行之旅
MySQL系列文章
你是否好奇过,一条看似简单的SQL查询语句,在MySQL内部究竟经历了怎样的"奇幻之旅"?从连接建立到结果返回,MySQL是如何层层处理、优化执行,最终将数据呈现在我们面前的?
作为一名开发者,深入理解MySQL的内部工作原理,就像是获得了数据库性能优化的"上帝视角"。无论是连接池的配置、索引的设计,还是存 ...
DDL
MySQL中,以DML,DQL是最经常用的,其次是DDL,DCL,单表操作主要为增删改查.
DDL操作
a.数据库操作(创建,查看,使用,删除):
1.创建数据库
#创建数据库
create database 数据库名称;
#当数据库不存在时,创建数据库
create database if not exists 数据库名称;
#创建数据库并指定utf8编码
create database 数据库名称 cha ...
MySQL统计分析binlog的数量与大小
脚本介绍
脚本mysql_binlog_gen_sum的功能与用途如下所示:
按天统计MySQL的binlog的生成数量(个数)与大小(Size)信息.用于数据分析.
按小时统计MySQL的binlog的生成数量(个数)与大小(Size)信息.用于数据分析.
写这个脚本的初衷是想实现类似Oracle数据库中统计分析归档日志生成的大小与数量的功能,奈何MySQL数据库中没有这 ...
MySQL中root用户密码管理
前言
记录一下mysql中root用户密码的管理方式,mysql中root用户密码管理方式主要分为三个场景:
场景一:首次部署mysql,需要设置root用户密码
场景二:已知mysql的root用户密码,但是需要修改对应的密码(例如定期更新密码)
场景三:忘记root密码,需重置root用户密码
首次部署mysql,设置root用户密码
方式一:在初始 ...
MySQL学习笔记-部分实例datagrip源码-10-21
show tables;
create table user(
id int primary key auto_increment,
name varchar(10) not null unique,
age int check(age>0 and age<=120),
status char(1) default '1',
gender char(1)
) comment '用户表';
-- 添加数据
insert into user(n ...
MySQL
MySQL
初始化
管理员身份运行cmd
-- 初始化
mysqld --initialize-insecure
-- 注册mysql服务
mysqld -install
-- 启动mysql服务
net start mysql
-- 修改默认账户密码
mysqladmin -u root password 1234
-- 登录mysql
mysql -uroot -p1234
卸载MySQL
-- 停止mysql服务
net stop mysql
-- 卸载mysql服务
mysqld -remove mys ...
MySQL学习笔记
本篇摘录自黑马程序员的B站教学视频,由本人学习视频内容后总结并提取摘要制作而成的简要笔记。本笔记只记录到进阶篇(大部分),剩下的进阶篇以及运维篇由于本人职业生涯没有用武之地,所以没有进行学习。
黑马程序员黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括
在此非常感谢两位热爱 ...
案例分析:MySQL 并行复制竟然比单线程慢?
最近碰到一个 case,发现在特定场景下,并行复制竟然比单线程复制要慢。
现象
从某个时间点开始,从库的复制延迟持续增加,且没有下降的趋势。
数据库版本:8.0.40,事务隔离级别 RC(Read Committed),并行重放线程数(replica_parallel_workers)为 8。
分析过程
通过show slave status\G查看,发现Relay_Master_Log_Fil ...
MySQL 33 我查这么多数据,会不会把数据库内存打爆?
有这样一个问题:主机内存只有100G,现在要对一个200G的大表做全表扫描,会不会把数据库主机的内存用完?想想逻辑备份,也是整库扫描,因此对大表做全表扫描看起来是没有问题的,那么这个流程到底是怎样呢?
全表扫描对server层的影响
假设现在要对一个200G的InnoDB表db1.t执行全表扫描,若要把扫描结果保存在客户端,会使 ...
MySQL性能分析(三)之optimizer_trace详解
一、概述
optimizer_trace是MySQL 5.6引入的一项跟踪功能,它可以跟踪优化器做出的各种决策(比如访问表的方法、各种开销计算、各种转换等),并将跟踪结果记录到information_schema.optimizer_trace表中。此功能默认关闭,开启后,可分析如下语句:
select
insert
replace
update
delete
explain
set
declare
case
if
ret ...
GreatSQL 优化技巧:最值子查询与窗口函数相互转换
GreatSQL 优化技巧:最值子查询与窗口函数相互转换
导语
近期 SQL 优化过程中遇到两个案例,一个是将最值子查询改写为窗口函数,另一个是将窗口函数改写为最值子查询,觉得很有意思,特此记录分享一下。
SQL案例
两个 SQL 语句
SQL1:
SELECT imei, c1
FROM (SELECT imei,
c1,
row_number( ...
MySQL 32 为什么还有kill不掉的语句?
MySQL有两个kill命令:
kill query+线程id,表示终止该线程正在执行的语句;
kill (connection)+线程id,表示断开这个线程的连接,如果线程有语句正在执行,会先停止正在执行的语句。
有时候可能会遇到:使用了kill,却没能断开该连接,再执行show processlist时,看到这条语句的command列显示的是killed。
那这是什 ...
MySQL迁移至GreatSQL后,timestamp字段插入报错解析
MySQL迁移至GreatSQL后,timestamp字段插入报错解析
背景描述
某业务系统进行国产化适配,将MySQL的数据迁移到 GreatSQL 后,执行 INSERT INTO ,update_time传参为空时报错,报错信息为:ERROR 1048 (23000): Column 'update_time' cannot be null ,而原来旧的MySQL环境中没有这个问题。
greatsql> INSERT INTO `t_interfac ...
SQL练习题(持续更新中)
测试表创建
-- 1. 部门表(departments)
CREATE TABLE IF NOT EXISTS departments (
dept_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID,主键自增',
dept_name VARCHAR(50) NOT NULL UNIQUE COMMENT '部门名称,唯一不可重复',
location VARCHAR(100) COMMENT '部门所在地',
created_at TIMESTAMP ...
Mysql索引失效场景
以下是导致索引失效的常见情况,分类并举例说明:
1. 对索引列进行运算或函数操作
当在索引列上使用函数、表达式、计算或类型转换时,MySQL无法直接使用索引来定位数据。
失效示例:
sql
-- 使用函数
SELECT * FROM users WHERE YEAR(create_time) = 2023;
-- 使用表达式
SELECT * FROM products WHERE price * 2 > ...
MySQL索引(一):从数据结构到存储引擎的实现
MySQL系列文章
MySQL索引是数据库性能优化的核心知识之一。正确理解索引的原理和使用场景,对于编写高效的SQL语句和设计合理的表结构至关重要。本文将系统介绍MySQL索引的相关知识,包括常见的数据结构、不同存储引擎的索引实现方式,以及聚簇索引和非聚簇索引的区别。
一、索引的常见数据结构及其优缺点
索引的本质是一 ...
MySQL 基础架构(二):连接层与数据存储层深度解析
MySQL系列文章
在上一篇文章《MySQL 基础架构(一):SQL语句的执行之旅》中,我们深入探讨了MySQL的核心服务层与存储引擎层。本文将聚焦于MySQL架构的另外两个关键组成部分:连接层与数据存储层,揭秘客户端如何与MySQL建立通信桥梁,以及数据如何持久化到物理磁盘。
一、MySQL四层架构全景回顾
MySQL采用经典的四层架构 ...
MySQL如何统计/监控MySQL用户登录失败?
在MySQL数据库中,如何统计/监控MySQL用户登陆失败的次数呢? 下面是我的一些探索与总结,如有不足或疏漏,欢迎指正。
错误日志监控统计
首先,要设置错误日志记录告警信息的级别,
MySQL 5.5,5.6,5.7.2之前设置系统变量log_warnings
show variables like 'log_warnings';
set global log_warnings=3;
有些MySQL版本可以 ...
MySqlException: Incorrect string value: '\xE6\x99\xBA\xE8\x83\xBD...' for column 'FieldName' at row 1
问题:MySqlException: Incorrect string value: '\xE6\x99\xBA\xE8\x83\xBD...' for column 'FieldName' at row 1
原因:在 MySQL 中遇到错误 MySqlException: Incorrect string value: '\xE6\x99\xBA\xE8\x83\xBD...' 通常是由于尝试将一个不兼容的字符编码插入到数据库中导致的。这个问题最常见的原因是尝试将 UTF-8 编 ...