MySQL 索引失效机理、创建规范与实战指南

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程(超长篇幅耐心阅读) 若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程,主要说明jeecg积木报表的集成、jeecg积木报表嵌入若依菜单、token权限控制,以及iframe嵌入表格等内容。 阅读详情

📘 MySQL 索引失效机理、创建规范与实战指南

在微服务与高并发场景中,索引是性能优化的第一道防线。但“索引失效”往往不是数据库的 Bug,而是 SQL 写法破坏了 B+ 树有序性 或 优化器(CBO)基于成本模型主动放弃索引。下面从底层原理、工程规范到生产监控,系统梳理。


一、 导致索引失效的典型 SQL 写法及底层原因

SQL 写法示例失效原因底层机制(B+树 / CBO)
🔹 前置/模糊匹配WHERE name LIKE '%张%'B+ 树按前缀有序,无法定位起始节点必须全表扫描;LIKE '张%' 可走索引
🔹 索引列参与运算/函数WHERE YEAR(create_time)=2024
WHERE amount + 100 > 500
索引存储的是原始值,函数/运算后值无序等价于全表逐行计算;应改为范围查询 create_time BETWEEN '2024-01-01' AND '2024-12-31'
🔹 隐式类型转换WHERE phone = 13800138000(phone 为 VARCHAR)MySQL 会将列数据隐式转为数字再比较等价于 WHERE CAST(phone AS SIGNED) = ...,破坏索引有序性。参数类型必须与字段严格一致
🔹 违反联合索引最左前缀索引 (a,b,c),查询 WHERE b=1 或 WHERE a>1 AND b=2B+ 树按 (a,b,c) 联合排序,跳过 a 直接查 b 无序范围条件(>,<,LIKE, BETWEEN)右侧列无法用于索引定位,仅能用于 ICP 过滤
🔹 OR 条件未全覆盖索引WHERE status=1 OR type=2(仅 status 有索引)优化器为保证结果完整,常放弃索引MySQL 5.6+ 可能走 Index Merge,但若估算成本高仍会全表扫描。建议拆分为 UNION ALL 或建联合索引
🔹 否定类操作符WHERE status != 1
WHERE id NOT IN (1,2,3)
WHERE name IS NOT NULL
过滤后数据量仍较大,回表成本 > 全表扫描CBO 成本模型判定全表扫描更优;IS NULL 在低基数时可能走索引
🔹 ORDER BY / GROUP BY 方向不一致ORDER BY create_time DESC, update_time ASC索引单向有序,混用方向无法利用索引排序触发 filesort;应统一方向或建复合排序索引
🔹 SELECT * 破坏覆盖索引SELECT * FROM t WHERE idx_col = ?需回表查所有字段,优化器可能跳过索引明确指定字段,凑成覆盖索引可彻底消除回表

💡 核心认知:所谓“索引失效”,80% 是 优化器基于代价评估主动选择全表扫描。索引不是“建了就一定用”,而是“用不用取决于数据分布、统计信息与成本模型”。


二、 索引创建的核心原则与工程规范

✅ 1. 查询驱动,反推设计

  • 先有 SQL,后有索引:基于慢查询日志、EXPLAIN 执行计划反推,禁止“凭空建索引”。
  • 覆盖高频场景:优先为 Top 20% 的查询模式建索引,而非为所有字段建索引。

✅ 2. 区分度(Selectivity)优先

-- 区分度公式:COUNT(DISTINCT col) / COUNT(*)
-- > 0.8 优秀,0.5~0.8 良好,< 0.1 不建议单独建索引
  • 高区分度:用户 ID、订单号、手机号 → ✅ 强烈建议
  • 低区分度:状态码、性别、布尔值 → ❌ 单独建无效,需联合其他字段

✅ 3. 联合索引严格守左序

查询模式推荐索引设计
WHERE a=? AND b=?(a, b)
WHERE a=? ORDER BY b DESC(a, b)
WHERE a>? AND b=?(b, a)(等值左,范围右)
SELECT id, name, status FROM t WHERE type=?(type, status, name, id)(覆盖索引)

✅ 4. 控制数量、长度与维护成本

  • 单表二级索引 ≤ 5~8 个,过多会导致 INSERT/UPDATE/DELETE 写放大。
  • 优先使用前缀索引:INDEX(name(10)) 节省空间,但需测试区分度。
  • 索引列尽量不可变(频繁 UPDATE 索引列会导致页分裂、碎片化)。

✅ 5. 规范命名与元数据管理

  • 普通索引:idx_表名_字段(如 idx_order_status_create)
  • 唯一索引:uk_表名_字段
  • 定期执行 ANALYZE TABLE 更新统计信息,确保优化器决策准确。

三、 索引使用时的注意事项与关键关注点

🔍 1. 警惕隐式转换(生产最常见坑)

字段类型错误写法正确写法
VARCHARWHERE phone = 13800138000WHERE phone = '13800138000'
DECIMALWHERE amount = 100.0(传 Float)传 BigDecimal 或字符串
DATETIMEWHERE create_time = '2024-05-09'WHERE create_time BETWEEN '2024-05-09 00:00:00' AND '2024-05-09 23:59:59'

⚙️ 2. 慎用 Optimizer Hint

  • FORCE INDEX、USE INDEX 仅作为临时兜底,优先通过改写 SQL、更新统计信息、调整索引结构解决。
  • hint 会锁定执行计划,数据量增长后可能反而变慢。

3. 数据量变化会改变执行计划

  • 小表(< 10 万行):全表扫描可能比索引更快(避免回表开销)
  • 大表(> 500 万行):索引收益显著,但深度分页仍需游标/延迟关联
  • 对策:定期 ANALYZE TABLE,压测覆盖生产数据量级

🔄 4. 索引合并(Index Merge)陷阱

  • 多个单列索引 WHERE a=? OR b=? 可能触发 Index Merge Union,但性能通常不如一个联合索引 (a,b)。
  • 优先建联合索引,减少优化器决策复杂度。

5. NULL 值处理策略

  • IS NULL 在低基数时可走索引,IS NOT NULL 通常不走。
  • 规范:业务允许时,字段声明 NOT NULL DEFAULT '' 或 0,避免 NULL 带来的索引与逻辑复杂性。

6. 配合分页优化

  • 索引无法解决 LIMIT 1000000, 10 的性能问题(扫描成本仍在)。
  • 必须配合 游标分页 或 延迟关联,索引仅加速定位起始点。

📡 7. 监控与治理

监控维度工具/命令告警阈值
未使用索引sys.schema_unused_indexes连续 30 天无使用
冗余/重复索引pt-duplicate-key-checker发现立即清理
索引碎片率SHOW TABLE STATUS LIKE 'table_name'Data_free / Data_length > 0.3
慢查询关联索引slow_query_log + EXPLAINrows 扫描 > 10 万

四、 总结:索引设计的“道”与“术”

索引不是银弹,而是用空间换时间、用写入换读取的工程权衡。

维度核心原则
🧠 认知层索引失效 ≠ Bug,是 CBO 成本模型的选择;理解 B+ 树有序性 & 回表代价
🛠️ 设计层查询驱动、区分度优先、最左前缀、覆盖索引、控制数量
⚡ 使用层防隐式转换、拒函数运算、明字段列表、定期 ANALYZE
📈 治理层监控未使用索引、清理冗余、压测验证、架构演进(分库分表/ES)

🚀 实战检查清单(上线前必过)

  • EXPLAIN 中 type 是否为 ref/range/const,而非 ALL?
  • Extra 是否出现 Using index(覆盖)或 Using where(合理过滤)?
  • 是否避免 SELECT *、隐式转换、函数运算?
  • 联合索引顺序是否匹配 WHERE/ORDER BY 模式?
  • 单表索引数是否 ≤ 8,写性能是否达标?
  • 是否配置慢查询日志 + 索引使用监控?

如果你提供具体的表结构、高频 SQL 或 EXPLAIN 输出,我可以为你输出针对性的索引改造方案与执行计划解读。

Android HCE实战:手把手教你用Kotlin实现NFC公交卡模拟(含完整APDU指令解析) 本文是一份Android HCE实战指南,详细讲解如何使用Kotlin实现NFC公交卡模拟。内容涵盖HCE服务搭建、APDU指令(如SELECT AID、GET PROCESSING OPTIONS)的完整解析与响应逻辑,并提供读卡器端测试代码,帮助开发者深入理解基于主机的卡模拟技术。 阅读详情

相关推荐

Langfuse落地教程:从Docker部署到项目接入,掌控LLM调用链路

大模型应用开发中,调用链路的透明度直接决定调试效率与成本控制。可观测性技术通过记录每次请求的输入、输出、模型参数与Token消耗,帮助开发者快速定位问题。Langfuse作为开源LLM可观测性平台,将Trace、Prompt版本管理、评分等能力集成于一体,支持Docker Compose自托管部署,并提供Python/JS SDK与REST API。借助部署后的控制台,团队能够直观追踪RAG检索、Agent工具调用等复杂流程中的每一步耗时与资源占用,实现从黑盒调用到全链路可视化的转变。无论是本地调试、线上排

weixin_29698641的博客 308

MySQL慢查询治理技术方案

从索引失效定位到索引设计、SQL 改写与配置基线的系统性治理

MARST.ZHANG的博客 520

拼多多/Temu反爬参数逆向踩坑记:从浏览器调试到补环境完整复盘

本文详细解析了拼多多/Temu反爬参数`anti_content`的逆向工程实战,从浏览器调试到补环境完整复盘。通过JavaScript逆向技术,拆解关键函数定位、反混淆算法还原及补环境技术应用,帮助开发者突破电商平台复杂反爬系统,提升数据采集效率。

weixin_33978722的博客 912

避坑指南:如何修复大规模权限关联表中由于隐式转换引发的查询

在数据库引擎内部进行比较时,如果字段定义的类型与输入值的类型不匹配,为了保证逻辑上的正确性和避免潜在的数据溢出风险,InnoDB 会优先尝试将原本存储在磁盘中的列值转换为目标类型的格式来进行计算。在正常的业务流程中,每次请求进入网关进行身份校验时,后端服务会根据当前的 Session 获取 `userId`,然后执行一条查询指令来检索该用户拥有的全部有效 Role ID 及对应的 Permission Code。当系统的租户数量增加及单个用户的动态授权增多时,这张表的行数迅速达到了千万级水平。

后台模板 161

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1066

LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)

本文通过实战指南,详细介绍了如何使用LightRAG技术快速搭建一个轻量级法律问答系统。该方案通过构建扁平化实体关系网络和混合检索策略,在5分钟内即可完成从环境准备到智能问答的完整流程,并附有完整代码,为中小团队和个人开发者提供了高效、低成本的AI应用解决方案。

time3的博客 277

SQLite数据库架构解析与查询优化实战手册

数据库作为现代应用的核心组件,其性能直接影响系统效率。理解数据库存储引擎的工作原理,特别是B-tree和B+tree索引机制,是优化查询性能的基础。这些数据结构通过高效的查找算法,将数据操作的时间复杂度降至O(log n),为海量数据管理提供了技术保障。在工程实践中,合理的索引设计和查询优化能显著提升应用响应速度,尤其在移动应用、嵌入式系统和桌面软件等场景中价值突出。本文聚焦SQLite这一轻量级数据库,深入解析其文件存储、并发控制等核心机制,并系统介绍如何通过执行计划分析、索引策略和事务管理来规避性能瓶颈

weixin_33739523的博客 367

自偏置电流镜设计实例

自偏置电流镜设计实例 一、概述 ​ 众所周知,电流镜属于模拟电路设计中的一个基本模块,可为其他模块提供偏置电流,例如在放大器中提供偏置电流以形成尾电流源并确定直流偏置点。本文将会介绍一种自偏置的电流镜,从原理出发,并以0.18um的工艺进行设计和仿真。 二、原理 ​ 如图一所示的电路,也称之为Beta-multiply reference电路,其中M2的尺寸是M1的k倍。M3复制M4的电流,M2和M1的漏极电流相同,但是VGS并不相等。其中 VGS=2IμnCoxW/...

aonuanjiang的博客 1万+

测试工程师面试全攻略:面试官视角的高频考点与避坑指南

软件测试是保障产品质量的核心环节,其根本原理在于通过有限的用例设计覆盖高风险场景,尽可能暴露缺陷。掌握测试用例设计方法、熟悉Linux命令与数据库操作,是测试工程师的基本功,也是衡量技术能力的重要标尺。在实际项目中,功能测试、接口测试与自动化测试的落地,离不开对业务逻辑和系统架构的深入理解。无论你是准备跳槽的功能测试、想转自动化的业务测试,还是刚入行的应届生,面试中都需要展示系统化的测试思维和解决问题的实际能力。从测试理论到项目复盘,从STAR法则到避坑经验,系统化准备才能让你在面试中脱颖而出,赢得心仪of

weixin_33860528的博客 320

Windows 10 下 Nacos 3.0.2 单机版保姆级安装教程(含JDK 17配置与MySQL 8.0连接避坑)

本文提供Windows 10下Nacos 3.0.2单机版的详细安装教程,涵盖JDK 17配置、MySQL 8.0连接优化及生产级安全设置。通过步骤详解和常见问题解决方案,帮助开发者快速完成Nacos的安装与配置,确保服务发现与配置管理的高效运行。

weixin_29237635的博客 318

YOLOv8融合HAttention:激活更多像素的注意力机制科研实践指南

HAttention通过层级化像素激活与融合的设计,为YOLOv8的像素级特征利用能力带来了质的飞跃。从原理理解到代码实现,再到集成调优,每一步都是科研中“解决像素信息遗漏难题”的具体实践。如果你在实验中发现某类细节或大尺度目标的检测仍有不足,可以尝试结合数据增强(如随机裁剪、多尺度训练)来强化模型对像素特征的学习能力。科研的价值在于不断挖掘技术的潜力,希望这份指南能真正帮你在目标检测的像素级特征利用领域找到新的突破点,祝你在科研探索中持续收获创新与成长。

FJN110的博客 105

中国程序员技术成长的三大结构性瓶颈

程序员技术能力本质上是工程实践能力,其发展依赖于稳定的技术演进节奏、可沉淀可复用的知识传递机制,以及学术原理与真实系统之间的有效翻译。当项目长期陷入需求驱动而忽视技术债偿还,组织知识高度依赖口耳相传而非结构化沉淀,高校理论教学与工业级技术栈(如Service Mesh、eBPF、Spring Cloud)之间缺乏场景化映射时,个体便容易陷入‘学得多、用得少、改不动生产代码’的困境。这种系统性断层,比单纯技能短板更隐蔽、更顽固,也更值得被识别和干预。

chuji3953的博客 467

【ComfyUI】Wan2.2 Animate 动作迁移重绘视频生成

本文介绍了一个基于ComfyUI的Wan2.2 Animate视频生成工作流,通过动作迁移和视频重绘技术实现高质量视频创作。该系统融合视频帧重建、动作迁移、图像重绘和音频合成等多种AI技术,核心采用Wan2.2 Animate 14B_fp8模型配合专属VAE解码器和LoRA微调模块。工作流程包含输入预处理、模型加载、特征提取、动作采样生成、解码输出和资源清理六个阶段,通过WanVideo系列节点实现从图像/视频输入到最终视频输出的完整处理。系统支持对参考图像进行视觉特征提取和嵌入生成,结合文本/动作嵌入进

Mr数据杨 2444

MySQL建库建表操作学习笔记

SQL(Structured Query Language,结构化查询语言)是用于在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。:用于定义对数据库对象(库、表、列、索引)的操作,如 CREATE、DROP、ALTER、RENAME、TRUNCATE 等。保存可变长度的字符串(可包含字母、数字以及特殊字 符)。:用于定义对数据库记录的操作,如 INSERT、DELETE、UPDATE、SELECT 等。:用于定义对数据库、表、字段、用户的访问权限和安全级别,如 GRANT、REVOKE 等。

Eternitycai的博客 217

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MySQL 单点详解(14)

给定一条 SQL,联合索引的列该怎么排呢?

2401_88601046的博客 343

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Flink SQL 连接器实战:MySQL Source、Flink CDC 与 JDBC Sink 全解析

提供有界流读取,适合批处理和维表场景,简单直接但无法感知变更。MySQL CDC提供无界流读取,通过「全量快照 + binlog 增量」的方式实现实时捕获,是实时数仓的核心入口,但需要 MySQL 侧正确配置 binlog 和权限。JDBC Sink负责结果回写,关键在于区分仅插入流和更新流,更新流必须依赖主键完成 upsert。掌握这三者的差异,本质上就是掌握了 Flink 中「有界与无界」「追加与更新」这两组最基本的语义。

2401_83857914的博客 419

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Mysql+Redis八股

慢查询是指对数据库的操作超过了 long_query_time 这个时间阈值,通常为10s,生产环境中可以自己设置。超过这个时间会被记录到慢查询日志。查询的数据量过大,会导致查询操作变慢。查询语句比较复杂,比如涉及到多个表的连接和子查询,可能导致查询变慢。索引失效的情况下,查询会退化成全表扫描,导致查询变慢。硬件资源不足,比如数据库服务器上同时运行了多个查询语句,这些语句之间竞争 cpu、内存等资源,导致服务器负载过高,查询变慢。确保开启了慢查询日志,运行语句,找到查询慢的 SQL 语句。

m0_73945675的博客 142

MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock

本文系统讲解 InnoDB 可重复读级别下的幻读问题:从三类读异常切入,剖析快照读依赖 MVCC、当前读依赖 Next-Key Lock 的双防线机制,用双会话实验复现幻读仍会出现的边界场景,并解释各数据库在幻读防护上行为分歧的根源。

大模型全栈工程师 · Thanks_ks 290

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 392

Docker 部署 WordPress+MySQL 高可用架构

点「安装 WordPress」

一直在努力学习的菜鸟 217

SQLite 是什么?和 MySQL、Redis 有什么区别,项目中应该怎么选?

SQLite 是轻量级嵌入式关系型数据库,无需独立服务,直接通过文件存储数据,适合本地工具、桌面应用、移动端离线数据及单机轻量业务。与 MySQL 相比,它部署简单但并发写入受限;与 Redis 不同,它支持完整 SQL 与事务,适用于结构化数据持久化。三者可协同使用:MySQL 处理核心业务,Redis 实现高速缓存与计数,SQLite 降低部署复杂度。选型应基于场景需求,而非技术偏好。

栈外手记|2018 年起深耕后端开发。跳出代码栈,分享技术、项目踩坑与行业思考,看见技术之外更多可能。 322

MySQL 库表操作学习笔记

SQL(结构化查询语言)是关系型数据库标准语言,可以改库结构、设置权限、增删改查数据、维护数据库。

2403_89660238的博客 163

MySQL 8.0 双向主从复制故障修复与重建指南

MySQL 8.0 双向主从复制故障修复 SOP:XtraBackup 重建备用节点,解决 GTID 1236 / 历史日志冲突

「YYL DBA手记」 数据库 · 架构 · 运维 · 实战 yyldba.blog.youkuaiyun.com 289

MySQL 8.0停服了,信创替代的窗口正在关闭

最近跟几个做信创的朋友聊天,发现一个被忽略的问题。MySQL 8.0在今年4月正式停了官方支持,Oracle不再出安全补丁,bug也没人修了。但大量企业的业务系统还跑在上面。这事搁以前不算急,慢慢选就行了。但现在不行了,国资委79号文写得很清楚,2027年底前央国企核心系统得完成国产化替换。MySQL停服跟信创deadline撞在一起,留给MySQL用户做决定的时间不多了。我做过不少数据库迁移项目,MySQL替代这个事,坑比大多数人想的要多。今天聊几个我觉得最容易被忽视的点。

databasedb的博客 330

MySQL 的四种隔离级别

本文聚焦数据库事务隔离级别,阐述SQL标准的四个级别:读未提交(RU)、读已提交(RC)、可重复读(RR)、串行化(Serializable),按严格程度递增。核心观点为:隔离性通过加锁换取,级别越高,并发越差。重点解析脏读(读未提交)、不可重复读(读已提交)、幻读(可重复读)的本质及应对机制。指出MySQL默认使用RR,而Oracle/PostgreSQL默认为RC,迁移时需注意隔离级别差异。关键区别在于ReadView生成时机:RC每次查询刷新快照,RR仅首次SELECT时生成,确保事务内一致性。建议生

weixin_48269137的博客 248

MySQL:库与表的操作

本文系统讲解MySQL库的操作,涵盖创建、查看、修改、删除数据库及字符集、校验规则的配置与影响。重点说明CREATE DATABASE语法、字符集(如utf8mb4)与校验规则(如utf8_general_ci vs utf8_bin)对大小写敏感性和排序的影响。通过实例演示不同校验规则下查询与排序结果差异。同时介绍SHOW DATABASES、USE、ALTER DATABASE、DROP DATABASE等操作,并强调备份恢复(mysqldump)与连接状态监控(SHOW PROCESSLIST)的重要

2401_87306079的博客 310
上一篇: MySQL 联合索引最左前缀 & 写放大深度解析
下一篇: MySQL 索引体系深度解析:分类、特性、场景与最佳实践
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值