MySQL 的调优(第二部分)

mysql、postgresql、oceanbase调优 融合行缓存即在OceanBase数据库多级存储架构下,如果一行的多个列存在于memstore、mini sstable、minor sstable和sstable,那么在查询该行时,需要将多个列做融合,此时可以用fuse row cache来缓存该行,避免在下次查询时继续做融合操作。如果发现某个线程的利用率超过90%,则该线程可能成为瓶颈,建议增加该参数以提高性能。将“full_page_writes”设置为off时,表示仅将页面的修改部分写入磁盘,可以提高性能,但在系统崩溃时可能会增加数据损坏的风险。 阅读详情

一、Hash索引

1.1 Hash索引原理

Hash索引基于哈希表实现,通过哈希函数将索引键值映射到哈希表中的桶位置。在MySQL中,只有Memory引擎原生支持Hash索引,InnoDB支持自适应Hash索引但不由用户直接创建。

核心特性:

  • 键值通过哈希函数计算得到哈希值

  • 哈希值指向哈希桶,桶内可能包含多个记录指针(哈希冲突时)

  • 只支持等值比较(=, IN),不支持范围查询

1.2 Hash索引的优缺点

优点:

  1. 查询效率极高:等值查询时间复杂度为O(1)

  2. 无排序开销:直接计算哈希值定位,无需维护有序性

  3. 内存友好:适合内存表,查询速度极快

缺点:

  1. 不支持范围查询:无法进行>、<、BETWEEN等查询

  2. 不支持部分匹配:LIKE 'abc%'无法使用

  3. 哈希冲突问题:不同键值可能哈希到同一位置

  4. 不支持排序:查询结果不能按索引顺序返回

  5. 存储不连续:数据在磁盘上分散存储

-- Hash索引使用示例(Memory引擎)
CREATE TABLE session_data (
    session_id VARCHAR(32) PRIMARY KEY,
    user_id INT,
    data TEXT,
    INDEX idx_user USING HASH (user_id)  -- 显式创建Hash索引
) ENGINE=MEMORY;

-- 等值查询能使用Hash索引
EXPLAIN SELECT * FROM session_data WHERE user_id = 1001;
-- 结果:type=ref, key=idx_user

-- 范围查询无法使用Hash索引
EXPLAIN SELECT * FROM session_data WHERE user_id > 1000;
-- 结果:type=ALL(全表扫描)
graph TD
    A[查询WHERE email='alice@example.com'] --> B[哈希函数计算]
    B --> C[哈希值: 0x3A7F]
    C --> D[定位哈希桶#3]
    D --> E[遍历桶内链表]
    E --> F{比对键值}
    F -- 匹配 --> G[返回行数据]
    F -- 不匹配 --> H[继续遍历]
    H --> E

二、聚集索引(Clustered Index)与非聚集索引(Non-Clustered Index)

2.1 聚集索引

定义:​ 表数据按照索引键值的顺序物理存储。InnoDB中,主键就是聚集索引,如果没有主键则选择第一个唯一非空索引,还没有则创建隐藏的ROW_ID作为聚集索引。

特点:

  1. 数据即索引:叶节点包含完整的行数据

  2. 每表只有一个:数据只能按一种物理顺序存储

  3. 查询效率高:主键查询只需一次索引查找

  4. 范围查询高效:相邻数据物理上连续存储

-- 创建有聚集索引的表
CREATE TABLE orders (
    order_id INT PRIMARY KEY,  -- 聚集索引
    customer_id INT,
    order_date DATE,
    amount DECIMAL(10,2)
) ENGINE=InnoDB;

-- 聚集索引查询
EXPLAIN SELECT * FROM orders WHERE order_id = 1001;
-- 只需一次索引查找就能获取所有列数据

2.2 非聚集索引(二级索引)

定义:​ 索引结构与数据行分离存储,索引叶节点存储的是主键值或行指针。

特点:

  1. 多级查找:先查索引,再通过主键查数据(回表)

  2. 每表可有多个:可创建多个非聚集索引

  3. 包含索引列和主键:叶节点存储索引列+主键值

-- 创建非聚集索引
CREATE INDEX idx_customer ON orders(customer_id);

-- 非聚集索引查询过程
EXPLAIN SELECT * FROM orders WHERE customer_id = 2001;
-- 1. 在idx_customer索引中查找customer_id=2001
-- 2. 获取对应的order_id(主键)
-- 3. 用order_id回表查询完整数据
graph TD
    subgraph A[聚集索引结构]
        A1[根节点<br>键值范围]
        A2[中间节点<br>键值范围]
        A3[叶节点<br>完整行数据]
        A1 --> A2 --> A3
    end
    
    subgraph B[非聚集索引结构]
        B1[根节点<br>索引键范围]
        B2[中间节点<br>索引键范围]
        B3[叶节点<br>索引键+主键]
        B1 --> B2 --> B3
    end
    
    B3 --> C[回表查询]
    C --> A3

三、二级索引

3.1 二级索引原理

二级索引是InnoDB中非聚集索引的别称,其叶节点包含索引列值 + 主键值。

查询过程(回表):

  1. 在二级索引B+树中查找索引键

  2. 获取对应的主键值

  3. 用主键值到聚集索引中查找完整行数据

-- 创建二级索引
CREATE INDEX idx_order_date ON orders(order_date);

-- 二级索引查询示例
SELECT * FROM orders 
WHERE order_date = '2024-01-15' 
  AND customer_id = 1001;
  
-- 查询过程:
-- 1. 使用idx_order_date找到order_date='2024-01-15'的记录
-- 2. 获取对应的order_id(主键)
-- 3. 用order_id回表查询完整数据
-- 4. 在内存中过滤customer_id=1001

四、覆盖索引(Covering Index)

4.1 覆盖索引概念

定义:​ 查询需要的所有列都包含在索引中,无需回表查询。

优势:

  1. 避免回表:直接从索引获取数据

  2. 减少IO:索引通常比数据行小

  3. 提升性能:特别是COUNT、SUM等聚合查询

-- 创建覆盖索引
CREATE INDEX idx_covering ON orders(customer_id, order_date, amount);

-- 覆盖索引查询示例1:所有字段都在索引中
EXPLAIN SELECT customer_id, order_date, amount 
FROM orders 
WHERE customer_id = 1001;
-- Extra: Using index(使用了覆盖索引)

-- 覆盖索引查询示例2:包含主键
SELECT order_id, customer_id, order_date 
FROM orders 
WHERE customer_id = 1001;
-- 虽然order_id不在idx_covering中,但所有二级索引都包含主键
-- 所以这也是覆盖索引查询

-- 非覆盖索引查询
EXPLAIN SELECT * FROM orders WHERE customer_id = 1001;
-- Extra: NULL(需要回表)

五、索引下推(Index Condition Pushdown, ICP)

5.1 ICP原理

MySQL 5.6引入,将WHERE条件中索引列的过滤下推到存储引擎层执行,减少回表次数。

-- 创建联合索引
CREATE INDEX idx_name_age ON users(name, age);

-- 无ICP的查询(MySQL 5.6前)
SELECT * FROM users 
WHERE name LIKE '张%' 
  AND age > 20;
-- 存储引擎:查找所有name以'张'开头的记录
-- Server层:过滤age>20的记录
-- 回表次数:所有name以'张'开头的记录

-- 有ICP的查询(MySQL 5.6+)
SELECT * FROM users 
WHERE name LIKE '张%' 
  AND age > 20;
-- 存储引擎:查找name以'张'开头且age>20的记录
-- 回表次数:name以'张'开头且age>20的记录
-- 显著减少回表次数!

-- 查看ICP使用
EXPLAIN SELECT * FROM users 
WHERE name LIKE '张%' 
  AND age > 20;
-- Extra: Using index condition

六、单列索引(Single Column Index)

6.1 单列索引使用

定义:​ 只包含单个列的索引。

适用场景:

  1. WHERE条件中频繁使用的单列

  2. ORDER BY单列排序

  3. 具有高选择性的列(区分度高)

-- 创建单列索引
CREATE INDEX idx_customer ON orders(customer_id);
CREATE INDEX idx_order_date ON orders(order_date);

-- 单列索引使用示例
-- 场景1:等值查询
SELECT * FROM orders WHERE customer_id = 1001;
-- 使用索引:idx_customer

-- 场景2:范围查询
SELECT * FROM orders WHERE order_date >= '2024-01-01';
-- 使用索引:idx_order_date

-- 场景3:排序
SELECT * FROM orders ORDER BY order_date DESC LIMIT 10;
-- 使用索引:idx_order_date

-- 多个单列索引的局限性
SELECT * FROM orders 
WHERE customer_id = 1001 
  AND order_date = '2024-01-15';
-- 只能使用其中一个索引(idx_customer或idx_order_date)
-- 另一个条件在Server层过滤

七、联合索引(Composite Index)

7.1 联合索引原理

定义:​ 包含多个列的索引,列顺序非常重要。

最左前缀原则:​ 查询必须从索引的最左列开始,不能跳过中间的列。

-- 创建联合索引
CREATE INDEX idx_customer_date ON orders(customer_id, order_date, status);

-- 有效使用联合索引的查询
-- 1. 使用最左列
SELECT * FROM orders WHERE customer_id = 1001;  -- √
-- 2. 使用前两列
SELECT * FROM orders WHERE customer_id = 1001 AND order_date = '2024-01-15';  -- √
-- 3. 使用全部三列
SELECT * FROM orders WHERE customer_id = 1001 AND order_date = '2024-01-15' AND status = 'PAID';  -- √
-- 4. 范围查询后,后面的列无法使用索引
SELECT * FROM orders WHERE customer_id = 1001 AND order_date > '2024-01-01' AND status = 'PAID';  -- △
-- customer_id和order_date使用索引,status无法使用索引

-- 无效使用联合索引的查询
-- 1. 跳过最左列
SELECT * FROM orders WHERE order_date = '2024-01-15';  -- ×
-- 2. 跳过中间列
SELECT * FROM orders WHERE customer_id = 1001 AND status = 'PAID';  -- ×
graph LR
    subgraph A[联合索引 idx_a_b_c<br>a,b,c]
        A1[按a排序]
        A2[相同a时按b排序]
        A3[相同a,b时按c排序]
        A1 --> A2 --> A3
    end
    
    subgraph B[查询条件]
        B1[WHERE a=1 AND b=2 AND c=3<br>√ 完全使用索引]
        B2[WHERE a=1 AND b=2<br>√ 使用前两列]
        B3[WHERE a=1<br>√ 使用最左列]
        B4[WHERE b=2 AND c=3<br>× 跳过最左列]
        B5[WHERE a=1 AND c=3<br>× 跳过中间列]
    end

7.2 联合索引设计原则

-- 原则1:区分度高的列在前
CREATE INDEX idx_good ON users(gender, name);  -- 不好,gender区分度低
CREATE INDEX idx_better ON users(name, gender);  -- 更好,name区分度高

-- 原则2:等值查询列在前,范围查询列在后
CREATE INDEX idx_bad ON users(age, city);  -- 不好,age常范围查询
CREATE INDEX idx_good ON users(city, age);  -- 更好,city等值查询

-- 原则3:经常查询的列放在前面
CREATE INDEX idx_frequent ON users(department, hire_date, salary);
-- 如果经常按department查询,放最前面

-- 原则4:考虑覆盖索引
CREATE INDEX idx_covering ON orders(customer_id, order_date, amount);
-- 如果经常查询这三个字段,创建覆盖索引避免回表

八、索引使用最佳实践

8.1 索引选择策略

-- 1. 选择性高的列建索引
SELECT 
    COUNT(DISTINCT gender) / COUNT(*) as gender_selectivity,
    COUNT(DISTINCT email) / COUNT(*) as email_selectivity
FROM users;
-- 选择性越高,索引效果越好

-- 2. 避免过多索引
-- 每个索引增加写操作开销
-- 建议:大表不超过5-7个索引

-- 3. 使用前缀索引
CREATE INDEX idx_email_prefix ON users(email(10));  -- 对长字符串使用前缀
-- 适用于TEXT/VARCHAR等长字段

-- 4. 定期分析索引使用
-- 查看未使用的索引
SELECT * FROM sys.schema_unused_indexes;

-- 5. 监控索引效率
-- 查看索引使用统计
SELECT * FROM sys.schema_index_statistics;

8.2 常见索引优化场景

-- 场景1:分页查询优化
-- 原始:深度分页慢
SELECT * FROM orders ORDER BY id LIMIT 1000000, 20;

-- 优化:使用覆盖索引+子查询
SELECT * FROM orders o
JOIN (
    SELECT id FROM orders 
    ORDER BY id 
    LIMIT 1000000, 20
) AS tmp ON o.id = tmp.id;

-- 场景2:IN和OR优化
-- 多个单列索引,使用UNION代替OR
SELECT * FROM users WHERE age = 20 OR city = '北京';
-- 优化为:
SELECT * FROM users WHERE age = 20
UNION
SELECT * FROM users WHERE city = '北京';

-- 场景3:ORDER BY优化
-- 确保ORDER BY使用索引
CREATE INDEX idx_date_status ON orders(order_date DESC, status);
SELECT * FROM orders 
WHERE customer_id = 1001 
ORDER BY order_date DESC, status;

通过合理使用各种索引类型,可以显著提升MySQL查询性能。实际应用中应根据查询模式、数据分布和业务需求综合设计索引策略。

九、索引的本质:空间换时间

索引(Index)​ 是数据库中的一种排好序的快速查找数据结构,类似于书籍的目录。它的核心原理是通过减少磁盘 I/O 次数来加速查询。

1. 核心优缺点对比

维度

优点(为什么用)

缺点(代价与风险)

性能​

大幅提升查询速度:WHERE、JOIN、ORDER BY、GROUP BY操作不再需要全表扫描。

降低写入速度:INSERT、UPDATE、DELETE需同步维护索引树,增加开销。

资源​

降低 CPU 消耗:减少数据排序和比较的计算量。

占用磁盘空间:索引本身也是文件,会占用额外存储(通常为表的 1.2-1.5 倍)。

约束​

保证数据唯一性:唯一索引(Unique)可防止重复数据插入。

维护成本高:索引碎片、统计信息更新、冗余索引管理需要 DBA 介入。

2. 索引类型速查(MySQL)

索引类型

关键字

特点

适用场景

主键索引​

PRIMARY KEY

唯一、非空,一张表只能有一个

自增 ID、业务主键

唯一索引​

UNIQUE

列值唯一,允许多个 NULL

手机号、邮箱、身份证号

普通索引​

INDEX

最基本的索引,无约束

姓名、状态码等高频查询字段

复合索引​

(col1, col2)

多列组合,遵循最左前缀原则

多条件联合查询

全文索引​

FULLTEXT

对文本分词检索

文章内容、商品描述(现多改用 ES)


十、实战:SQL 索引创建与使用语法

1. 创建索引的 3 种方式

方式一:建表时直接创建(推荐)

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `phone` varchar(11) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),                    -- 主键索引
  UNIQUE KEY `uk_phone` (`phone`),        -- 唯一索引
  KEY `idx_username` (`username`),        -- 单列索引
  KEY `idx_age_created` (`age`, `created_at`)  -- 复合索引
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

方式二:使用 CREATE INDEX(已有表)

-- 创建普通索引
CREATE INDEX idx_username ON user(username);

-- 创建复合索引(常用于多条件查询)
CREATE INDEX idx_age_created ON user(age, created_at);

方式三:使用 ALTER TABLE(功能更强)

-- 添加唯一索引
ALTER TABLE user ADD UNIQUE INDEX uk_phone(phone);

-- 添加主键索引(如果表没有主键)
ALTER TABLE user ADD PRIMARY KEY (id);

2. 查看与删除索引

-- 查看表的所有索引
SHOW INDEX FROM user;

-- 删除索引
DROP INDEX idx_username ON user;

十一、什么时候该用索引?(最佳实践)

原则:读多写少,且数据量大于 1 万行。

场景

说明

示例 SQL(建索引后)

高频查询条件​

WHERE子句中频繁出现的字段

SELECT * FROM orders WHERE user_id = 10086;
→ 应为 user_id建索引

外键关联字段​

多表 JOIN时的连接字段

SELECT u.name, o.amount FROM user u JOIN orders o ON u.id = o.user_id;
→ orders.user_id必须建索引

排序与分组​

ORDER BY或 GROUP BY的列

SELECT age, COUNT(*) FROM user GROUP BY age;
→ 为 age建索引加速分组

高选择性列​

字段值几乎不重复(如手机号)

SELECT * FROM user WHERE phone = '13800138000';
→ 建唯一索引,过滤效率极高

覆盖索引​

查询列全在索引中,避免回表

SELECT username, age FROM user WHERE username = '张三';
→ 建 (username, age)联合索引


四、什么时候不该用索引?(避坑指南)

原则:小表、写多读少、低区分度字段。

场景

原因

建议

小表(< 1万行)​

全表扫描比索引查找更快(无 I/O 瓶颈)

数据量小无需优化,等表变大后再加

频繁更新的列​

每次更新都要重构索引树,性能开销大

日志表、流水表慎用索引

低区分度字段​

如性别、状态(只有几个值),索引无效

SELECT * FROM user WHERE gender = '男';
→ 建索引不如全表扫描

很少使用的列​

只为偶尔一次的报表查询建索引是浪费

使用 EXPLAIN分析后再决定

长文本字段​

如 TEXT、BLOB,索引占用空间巨大

改用前缀索引或全文检索引擎(如 ES)


十一、高级技巧:复合索引与最左前缀原则

复合索引(联合索引)​ 是面试高频考点,必须掌握最左前缀原则。

1. 创建复合索引示例

-- 创建一个 (country, city, age) 的复合索引
CREATE INDEX idx_country_city_age ON user(country, city, age);

2. 最左前缀原则:哪些 SQL 会走索引?

查询条件

是否走索引

说明

WHERE country='China' AND city='Beijing'

✅ 全索引生效​

从左到右连续匹配

WHERE country='China'

✅ 部分生效​

只用到了第一列

WHERE country='China' AND age=25

⚠️ 部分生效​

跳过了 city,age无法单独使用

WHERE city='Beijing'

❌ 失效​

缺少最左列 country,全表扫描

WHERE age=25

❌ 失效​

缺少最左列,全表扫描

结论:建立复合索引时,将最常用、区分度最高的列放在最左边。


十二、常见索引失效场景与优化(附 SQL 对比)

即使建了索引,写法不当也会导致索引失效,退化为全表扫描。

失效场景

错误写法(❌ 失效)

正确写法(✅ 优化)

在索引列上使用函数​

SELECT * FROM user WHERE YEAR(created_at)=2026;

SELECT * FROM user WHERE created_at BETWEEN '2026-01-01' AND '2026-12-31';

隐式类型转换​

SELECT * FROM user WHERE phone = 13800138000;
(phone 是 varchar)

SELECT * FROM user WHERE phone = '13800138000';

使用 !=或 NOT​

SELECT * FROM user WHERE age != 18;

无法优化,尽量避免对索引列使用否定条件

OR连接非索引列​

SELECT * FROM user WHERE age=18 OR name='张三';
(name 无索引)

改为 UNION或为 name建索引

LIKE以通配符开头​

SELECT * FROM user WHERE name LIKE '%三';

SELECT * FROM user WHERE name LIKE '张%';
(仅前缀匹配有效)


十三、总结:索引设计黄金法则

  1. 不要过度索引:索引不是越多越好,一般单表建议 3-5 个。

  2. 优先考虑复合索引:将多个单列索引合并为覆盖查询需求的复合索引。

  3. 使用 EXPLAIN验证:执行 EXPLAIN SELECT ...查看 type是否为 ref/range,确认索引生效。

  4. 定期维护:使用 ANALYZE TABLE更新统计信息,定期清理未使用的索引。

版权声明:本文为 优快云 博主原创,转载请注明出处。如有疑问,欢迎评论区交流。

mysql 调优学习笔记 今天开始学习mysql调优啦 (偶那东一榔头西一棒子的学习历程的又一棒子) 好啦,言归正传:  首先,mysql调优有三个主要的方式,由低到高分别是: 1、硬件调优 2、修改mysql进程 3、优化mysql查询 一、硬件调优        先看看硬件调优吧。这个有两方面你可以考虑,首先对现有硬件条件进行修复,能调整的调整,能替换的替换,例如你可以把中央处理器(CPU)或磁盘速度 阅读详情

相关推荐

解读MySQL性能调优“金字塔”

计算机是一种实验的科学 性能优化是实战的艺术 蒸汽机的改进不是一蹴而就的,MySQL性能的改进也是贯穿整个MySQL发展史的。MySQL之父Monty在1981年写了MySQL的第一行代码以后,在开源的帮助下MySQL成长为目前最流行的开源数据库,同样其也凝聚了非常多的开发者、DBA、工程师的...

Jack_Roc的博客 1591

各取所需,意外惊喜

各取所需,意外惊喜                                    ——读《MySQL性能调优与架构设计》有感 几点感受:1.这本书的更适合人群是DBA,如果是DBA看,可以再加一分。适合MYSQL DBA从入门到精通,当然还要自己从事很多的实践。但有些性能优化部分主要是从DB的角度考虑的,如果从全局进行考虑,如结合业务逻辑、中间层,则优化未必就合理。这也

620

MySQL调优

MySQL调优基本介绍

啊Q老师 3758

MySQL性能调优

注意事项1. 避免过度优化:优先解决性能瓶颈最严重的部分。2. 基准测试:使用sysbench或自定义脚本验证调优效果。3. 灰度发布:生产环境调整配置时逐步验证。通过以上策略,可系统性提升MySQL性能,支撑高并发、大数据量场景。实际调优需结合业务特点,持续监控与迭代。

guanxin0206的博客 4019

Vscode+ROS/ROS2 开发调试基于ROS/ROS2应用环境配置

在ROS操作系统开发应用程序时,我们常常需要调试代码,验证程序的正确性。但是在用rosrun或者roslaunch启动节点后,若程序运行过程中发生错误而导致发生出错停止工作,这时候终端并不会输出具体的信息指出在何处发生了错误,具体错误的原因又是什么。往往仅仅是core dump 或者segmentation fault 等等一类的模糊提示。

Chasinglight的博客 5800

Rockchip平台Android相机HAL3开发实战:从配置到调试全流程解析

本文深入解析了Rockchip平台Android相机HAL3的开发全流程。从理解AAL与PSL核心架构、解析关键配置文件(如camera3_profiles.xml和Tuning文件),到搭建编译环境、进行增量部署,并提供了系统日志分析、V4L2调试等高级问题排查技巧,为开发者提供了一套从配置到调试的实战指南。

docker7nomad的博客 843

MySQL 性能调优

优化:优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询到,查询服务器优化器是如何进行优化到,便于用户重构查询和修改相关配置,达到最优。前面的章节我们知道如何设计最优数据库的表结构,如何建立最好的索引,这些对于高性能来说是必不可少的。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。需要确认业务表结构设计是否合理,SQL语句优化是否足够,索引设计是否规范,是否可以剔除无用的索引。慢查询日志,顾名思义,就是查询花费大量时间的日志。

学习学习学习学习 1228

AM243x多核MCU启动流程解析与OSPI Flash烧录实战

嵌入式系统开发中,引导加载器是芯片上电后执行的第一段软件,负责初始化硬件、加载操作系统或应用程序。其工作原理通常遵循多级引导链,从ROM固件到用户可定制的二级引导程序,逐级建立完整的软件运行环境。这一机制的技术价值在于实现可靠的系统启动、支持安全校验,并为多核异构架构提供协同基础。在应用场景上,引导加载器广泛应用于工业控制、汽车电子和物联网设备,确保设备能从非易失性存储器中自主启动。本文聚焦于TI AM243x这类高性能多核MCU,深入剖析其包含RBL和SBL在内的三级启动流程,并详细演示如何通过UART接

weixin_28703451的博客 582

MySQL学习之调优

索引本质是数据结构。索引在存储引擎中实现。

qq_54842049的博客 2533

Electron多窗口开发避坑指南:Pinia状态同步的3种解决方案对比

本文深入探讨了在Electron多窗口应用中实现Pinia状态同步的三种核心方案。针对Electron多窗口架构下状态隔离的挑战,文章对比了基础事件通信、共享存储以及智能Pinia插件等方案的优劣与适用场景,并提供了生产级的实现指南与选型建议,帮助开发者构建健壮高效的桌面应用。

spice的博客 479

永磁同步电机矢量控制——电流内环前馈解耦策略

在采用永磁同步电机矢量控制时,ud和uq的指令值存在耦合项。需要对其进行解耦,目前,常用的解耦设计方法有前馈解耦、偏差解耦以及内模控制,本文主要分享电流内环前馈解耦控制策略。

a12312341ll的博客 8691

SQL 调优到底是干什么的?一共包含哪些部分?

理解执行计划:用EXPLAIN分析查询,了解数据库如何执行合理使用索引为经常用于查询条件、排序和分组的字段添加索引避免过多索引(会影响写入性能)优化查询语句避免全表扫描减少子查询,多用JOIN合理使用LIMIT和OFFSET监控和持续优化使用慢查询日志发现问题定期分析索引使用情况随着数据增长不断调整优化策略通过SQL调优,你可以让数据库用更少的资源做更多的事情,就像教会图书馆管理员如何快速找到读者需要的书一样!

长风破浪会有时的博客 1304

【ACP】2025-最新-疑难题解析-1

即用户手动释放时,因实例释放保护开启,不会释放该 ECS 实例(不同云厂商具体实现有差异,但题目场景下选 C )。结合题目中标记,答案为。综上,答案选 B。综上,答案选 C。综上,答案选 D。综上,答案选 A。综上,答案选 A。综上,答案选 C。综上,答案选 D。综上,答案选 A。

jundao1997的专栏 364

深入浅出MySQL调优

深入浅出MySQL调优 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录深入浅出MySQL调优1. 预备知识1.1 MySQL体系结构1.2 MySQL存储引擎1.2.1 存储引擎的概述1.2.2 存储引擎的特性 1. 预备知识 1.1 MySQL体系结构 整个MySQL Server体系结构由以下部分组成 Connecntion Pool:连接池组件 Management Services & Uti

qq_42341656的博客 828

【AI】获取各类AI大模型api-key的快速教程(OpenAI、Gemini、Claude、DeepSeek)

【AI】获取各类AI大模型api-key的快速教程(OpenAI、Gemini、Claude、DeepSeek)

funfan的博客 2926

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MySql调优

MySql调优技巧,分类记忆

bear_309的博客 1558

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL调优参考文档-调优篇

MySQL调优参考文档-调优篇

冰点契约的博客 1115

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MySQL性能调优与深度分页优化策略

在现代的Web应用和大数据环境中,MySQL作为一款广泛使用的开源关系数据库管理系统,其性能直接影响着应用程序的响应时间和用户体验。尤其是在面对海量数据的深度分页查询时,性能问题尤为突出。本文旨在探讨MySQL的性能调优策略以及深度分页查询的优化方法。MySQL性能调优是一个复杂的过程,涉及到数据库配置、查询优化、系统资源管理等多个方面。而深度分页查询的优化则需要结合具体的应用场景和数据特性,采用灵活的策略来实现高效的数据检索。通过上述的优化措施,可以显著提升MySQL在高并发和大数据环境下的表现。

小码农的博客 3856

通过宝塔面板实现MySQL性能简单调优

在PHP+MYSQL架构网站运行过程中,往往会遇到各种性能问题影响,如MySQL、PHP、CPU、磁盘IO、缓存等,其中MySQL瓶颈就是最常见也最难解决的一种影响网站性能的因素;通常,我们会使用redis、memcached等缓存软件来缓存内容,这确实是最优的解决方案之一,但这需要网站程序的支持,然而多数常用网站程序并不支持或者不能完美支持这些缓存软件,今天我们就来谈谈如何通过MySQL自身的配...

YNlanduiyun的博客 4358

如何做mysql调优?绝命7招,让慢SQL调优100倍

一亿用户量,平均每人每天10次的业务量,要求并发数在5000以上,峰值在5w到10w之间,QPS在25w以上, 如何进行压测?如何进行调优?对于架构师、高级开发来说, 调优是 核心内容, 那么压测更是内功中的内功。尼恩团队结合资深架构经验和行业案例,给大家梳理一个系列的《Java 调优圣经》PDF

架构师尼恩 2117

Mysql性能调优

Mysql性能调优

qq_45443475的博客 3156

MySQL调优篇 | SQL调优实战(5)完结篇

MySQL调优篇写到这里就差不多告一段落了,希望大家都能真真正正能写出高性能的SQL,结合实践中不断的实验和摸索,早日晋级资深或者架构师。

一线工作者的所见、所闻...... 1万+

MySQL高阶调优,一文让你从入门到精通!

从入门到精通

m0_38048955的博客 1334
上一篇: MySQL 的性能调优(第一部分)
下一篇: Spring Cloud 概述
StackNoOverflow
博客等级 码龄1年 22粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值