数据库性能调优:定位Slow SQL!

性能瓶颈分析与调优实战:从定位到优化的完整方法论 在软件工程实践中,性能瓶颈分析与调优是保障系统稳定性和用户体验的关键环节。其核心原理在于通过系统化的监控、追踪和分析手段,识别并解决影响系统吞吐量、响应时间和资源利用率的制约点。这项技术的价值在于能够将性能测试从单纯的“发现问题”提升到“解决问题”的层面,有效避免线上故障,提升系统容量和韧性。典型的应用场景包括高并发业务系统、微服务架构以及数据库密集型应用等。本文将以性能测试工程师的实战视角,深入剖析如何运用类似中医“望闻问切”的系统性方法,结合全链路追踪和JVM调优等具体技术,实现从应用代码、中间件到数据 阅读详情

定位慢 SQL(Slow SQL)是数据库性能调优中的一个重要任务,目的是找到和优化那些执行时间较长的 SQL 查询。以下是常用的定位慢 SQL 的方法和步骤:

1. 使用数据库自带工具

大多数数据库管理系统(DBMS)提供了内置的工具和视图来帮助定位慢 SQL。以下是一些主要数据库的常用工具:

MySQL

慢查询日志:

可以启用 MySQL 的慢查询日志,记录超过指定执行时间的查询。

配置示例:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;  -- 单位是秒

查看慢查询日志:

SHOW VARIABLES LIKE 'slow_query_log_file';
EXPLAIN:

使用 EXPLAIN 语句来分析查询的执行计划。

示例:

EXPLAIN SELECT * FROM your_table WHERE your_condition;

PostgreSQL

pg_stat_statements:

PostgreSQL 提供了 pg_stat_statements 扩展来记录 SQL 语句的执行统计信息。

启用方法:

CREATE EXTENSION pg_stat_statements;

查看统计信息:

SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
EXPLAIN ANALYZE:

使用 EXPLAIN ANALYZE 来查看 SQL 查询的实际执行计划和执行时间。

示例:

EXPLAIN ANALYZE SELECT * FROM your_table WHERE your_condition;

Oracle

Automatic Workload Repository (AWR):

Oracle 提供了 AWR 报告来分析性能问题,包括慢 SQL。

查看 AWR 报告:

@?/rdbms/admin/awrrpt.sql
SQL Trace and tkprof:

使用 SQL Trace 和 tkprof 工具来跟踪和分析 SQL 语句的执行。

启用 SQL Trace:

ALTER SESSION SET sql_trace = TRUE;
V$SQL 和 V$SQLAREA

查询 V$SQL 和 V$SQLAREA 视图来获取 SQL 语句的性能数据。

示例:

SELECT sql_text, elapsed_time, cpu_time, executions FROM v$sql ORDER BY elapsed_time DESC;

2. 监控工具

使用数据库监控工具可以帮助实时监控数据库性能,定位慢 SQL。这些工具通常提供图形化界面和详细的性能指标。常见的监控工具包括:

  • MySQL Enterprise Monitor(MySQL)

  • pgAdmin、pgWatch(PostgreSQL)

  • Oracle Enterprise Manager(Oracle)

  • 第三方工具:如 Datadog、New Relic、Prometheus 等。

3. SQL 诊断和分析

在实际分析慢 SQL 时,可以结合以下步骤进行详细诊断:

1.收集信息:

收集慢查询的 SQL 语句、执行时间、发生频率等信息。

2.分析执行计划:

使用数据库提供的 EXPLAIN 或 EXPLAIN ANALYZE 工具来查看查询的执行计划,找出可能的性能瓶颈(如全表扫描、索引未使用、JOIN 操作不当等)。

3.检查索引:

确认查询涉及的列是否有合适的索引,索引是否被正确使用。

4.统计信息和表结构:

检查表的统计信息是否最新,表结构是否合理。

示例:

ANALYZE TABLE your_table;
5.数据库配置:

检查数据库的配置参数是否优化,例如缓冲区大小、连接池配置等。

6.硬件资源:

确认服务器的硬件资源(CPU、内存、磁盘 I/O 等)是否充足,是否存在资源瓶颈。

4. 优化建议

在找到慢 SQL 后,可以考虑以下优化措施:

添加或优化索引:

根据查询条件和执行计划,添加或优化索引。

示例:

CREATE INDEX idx_your_column ON your_table(your_column);
重构查询:

改写查询语句,避免不必要的复杂操作。示例:使用子查询、分解复杂查询等。

调整表结构:

归一化或反归一化表结构,根据需要调整分区。

数据库参数调优:

调整数据库的配置参数,如内存分配、缓存大小、并发限制等。

分区和分片:

对于大表,可以考虑使用分区或分片来提高查询性能。

缓存:

使用缓存(如 Redis、Memcached)来减少数据库查询的频率。

示例代码:使用 EXPLAIN 分析慢查询(MySQL)

-- 慢查询示例
SELECT * FROM orders WHERE customer_id = 12345 AND order_date > '2023-01-01';

-- 使用 EXPLAIN 分析
EXPLAIN SELECT * FROM orders WHERE customer_id = 12345 AND order_date > '2023-01-01';
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SlowQueryAnalyzer {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/yourdatabase";
        String username = "yourusername";
        String password = "yourpassword";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {

            String slowQuery = "SELECT * FROM orders WHERE customer_id = 12345 AND order_date > '2023-01-01'";
            long startTime = System.currentTimeMillis();
            ResultSet rs = stmt.executeQuery(slowQuery);
            long endTime = System.currentTimeMillis();

            System.out.println("Query executed in " + (endTime - startTime) + " ms");

            // 使用 EXPLAIN 分析
            ResultSet explainRs = stmt.executeQuery("EXPLAIN " + slowQuery);
            while (explainRs.next()) {
                System.out.println("id: " + explainRs.getInt("id"));
                System.out.println("select_type: " + explainRs.getString("select_type"));
                System.out.println("table: " + explainRs.getString("table"));
                System.out.println("type: " + explainRs.getString("type"));
                System.out.println("possible_keys: " + explainRs.getString("possible_keys"));
                System.out.println("key: " + explainRs.getString("key"));
                System.out.println("rows: " + explainRs.getInt("rows"));
                System.out.println("Extra: " + explainRs.getString("Extra"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述示例展示了如何执行一个慢查询,并使用 EXPLAIN 命令来分析查询的执行计划。实际应用中,需要结合执行计划的输出结果来确定优化方向。

 ——EOF——


福利:

后台回复【酒店】可免费领取酒店管理系统源码

MySql学习之慢SQL优化和慢SQL案例 慢查询日志记录慢SQL explain查看分析SQL的执行计划 profile分析执行耗时 Optimizer Trace分析详情 确定慢SQL问题并采用相应的方案 隐式转换、最左匹配、深分页问题、in元素过多、order by 走文件排序、 索引字段上使用(!= 或者 < >)索引字段上使用is null, is not null,索引可能失效、 左右连接,关联的字段的编码格式不一样 、group by使用临时表、delete + in子查询不走索引、 其它索引失效场景,如like '%xxx' 阅读详情

相关推荐

mysql 慢sql 分析工具pt-query-digest

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。pt-summary。

山巅 1714

如何分析定位到执行性能慢的SQL

如何分析定位到执行性能慢的SQL

Tian_Cai_Wu_Ge的博客 1775

性能调优全流程实战:从瓶颈定位到优化落地的系统性方法

性能调优是确保软件系统高效、稳定运行的核心工程实践。其核心原理在于通过系统性的监控、测试与分析,识别并消除影响系统吞吐量、响应时间及资源利用率的瓶颈点。这项技术的价值在于,它能够在不显著增加硬件成本的前提下,通过优化软件设计与代码实现,从根本上提升系统容量与用户体验,直接关系到产品的市场竞争力和运维成本。典型的应用场景涵盖高并发Web服务、大数据处理以及微服务架构等,其中数据库慢查询、JVM垃圾回收(GC)不当、线程池配置不合理等都是常见瓶颈。本文将以一线实战经验为基础,系统拆解从目标定义、瓶颈分析到方案实

weixin_30861797的博客 367

OceanBase数据库SQL调优

OceanBase数据库SQL调优核心在于优化数据访问路径,重点关注执行计划中的操作符类型、估算行数和分区信息。关键优化手段包括:创建合适索引避免全表扫描、确保索引有效使用、更新统计信息纠正优化器误判、优化复杂JOIN和子查询。在分布式环境下需特别注意分区裁剪、数据倾斜和跨机事务问题。通过慢查询日志、执行计划分析和SQL审计视图等工具定位问题,采用索引优化、SQL重写和Outline绑定等方法提升性能,最终实现减少数据访问量的目标。

kunpeng90的博客 1240

面试官:如何快速定位慢SQL

开启慢查询日志 在项目中我们会经常遇到慢查询,当我们遇到慢查询的时候一般都要开启慢查询日志,并且分析慢查询日志,找到慢sql,然后用explain来分析 系统变量 MySQL和慢查询相关的系统变量如下 参数 含义 slow_query_log 是否启用慢查询日志, ON为启用,OFF为没有启用,默认为OFF log_output 日志输出位置,默认为FILE,即保存为文件,若设置为TABLE,则将日志记录到mysql.show_log表中,支持设置多种格式 slow_query_l.

小识的博客 8123

如何定位慢SQL

优化SQL的前提是你已经发现了那些执行起来有问题或耗时很长的SQL。总有面试官会问你在平时生产/开发过程中你们是如何定位慢SQL的。

weixin_45876411的博客 2096

性能调优:troubleshooting slow parse sql on 19.16

本文分享了一个Oracle 19.16数据库SQL解析性能问题的真实案例。某客户从11g升级到19c后,多个SQL出现解析异常缓慢的现象,但未发现明显等待事件。作者选取了一个包含复杂CASE语句、子查询和函数调用的典型SQL进行分析,展示了完整的SQL文本。该案例揭示了版本升级可能带来的性能问题,为DBA排查类似情况提供了参考。文章首发于微信公众号"IT民工的龙马人生"和个人博客网站(www.htz.pw),建议访问原站查看完整代码格式。

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 803

Canoe CAPL TCP通信避坑指南:从OnTcpConnect回调不触发到Socket句柄管理

本文详细解析了Canoe CAPL中TCP通信的常见问题与解决方案,包括OnTcpConnect回调不触发的三大原因、Socket句柄管理的内存泄漏风险、数据发送截断规则等。通过实战案例和代码示例,帮助开发者规避TCP通信中的典型陷阱,提升车载网络测试的稳定性和可靠性。

weixin_26976635的博客 358

SQL调优(性能调优,性能监控,mysql慢日志,orcal执行计划PLSQL)

Sql 调优 首先在学习的过程中,我会先了解一个这个东西是做什么用的,为什么要用。 做什么: 随着系统的数据量逐年增加,并发量也成倍增长,很多时候下,一个项目数据库的数据数量是成千上百万条数据,如果对数据库查询做的是全表扫描,那么首先在时间上面就很不合算,同时在读写操作的过程中又会造成资源的浪费。这就会造成一下几个问题的出现:1.查询性能低,2.执行时间过长,3.等待时间过长。在我们课设中数据量小很难感受出来,但是这不代表SQL调优的不必要性。 所以SQL调优就是为了解决这些问题(感觉不止这些,一.

qq_41723573的博客 394

SRC漏洞挖掘实战:从攻击面管理到业务逻辑漏洞的精准狩猎

在网络安全领域,漏洞挖掘是识别和利用软件系统中安全弱点的核心实践。其基本原理在于通过系统化的方法,识别和评估一个应用或系统的攻击面,并从中定位安全防护的薄弱环节。这项技术的价值在于能够主动发现潜在风险,防患于未然,对于保障企业数字资产安全至关重要。典型的应用场景包括对Web应用、移动端API以及各类在线业务系统的安全性评估。在实际的漏洞挖掘,尤其是针对安全应急响应中心(SRC)的实战中,高效的策略往往聚焦于**边缘资产**的发现与利用,以及对**业务逻辑漏洞**的模式化测试。掌握这些经过验证的思路,能帮助安

babing2770的博客 415

企业信息化系统的组成模块-核心业务系统

通过标准化的数据流形成完整的业务闭环,CRM生成的销售订单驱动ERP的生产和采购,ERP将生产计划传递给MES执行,MES报工数据返回ERP进行成本核算,ERP再将交付信息同步给CRM供客户查询。生产管理确保高效交付,缩短订单周期。某贸易公司实施ERP供应链模块后,库存周转率从每年4次提升到8次,库存资金占用从2000万降到1200万,释放800万现金流,同时缺货率从15%降到5%。│ │库存 │ │ MRP │ │ ERP │ │ 云ERP/ │ │。

weiyvyy的博客 697

WordPress数据库操作最佳实践:Prepared SQL与Slow Query检测完整指南

WordPress数据库操作是每个WordPress开发者必须掌握的核心技能。在这篇终极指南中,我们将深入探讨如何通过WordPress Coding Standards的Prepared SQL嗅探工具和Slow Query检测功能来确保数据库操作的安全性和性能。无论你是新手还是经验丰富的开发者,这些最佳实践都将帮助你编写更安全、更高效的WordPress代码。 ## 为什么数据库安全如此重要

gitblog_00067的博客 981

从零开始:TexLive(Latex)安装与配置全指南

本文提供了一份详尽的TexLive(Latex)安装与配置全指南,旨在帮助用户从零开始快速搭建LaTeX工作环境。内容涵盖从镜像下载、安装步骤详解、环境验证到高效编辑器(如VS Code)配置,并特别强调了中文排版支持与宏包管理,确保用户能顺利处理学术论文等专业文档的排版需求。

weixin_29284885的博客 905

SQL查询太慢?实战讲解YashanDB SQL调优思路

说起 SQL 调优,不少人认为是个高难度的事情,让人望而却步。但其实在日常的运维过程中,慢 SQL 却是一个常见的问题,这时大家或多或少会用到一些常用的调优手段,比如加索引、调整执行计划等。接下来,我们将通过三大环节详细讲解如何发现、分析和优化 “慢 SQL”,具体包括利用慢日志定位问题、分析执行计划并可通过 hint 手段人为调整优化、以及有效搜集统计信息优化执行计划等。这个通用思路可以在遇到性能问题时,提供一种可行的解决方案,帮助大家尝试着手解决问题。很多时候 SQL 突然变慢,可能是执行计划改变了。

cod0410的博客 1191

Cisco 路由器 打环测试教程

环 回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如下图所示,我们在设备端口上用命令loopback(某些端口上命令格式为 loopback diagnostic)使接口从内部将自己发送的信号转接到自己的接收端(如红线所示),通过检查数据发送和接收的情况来判断端口工作状态是否正常。如果 需要对端口进行完全的检测,可以使用符合标准的短跳线将端口收发短接构成环...

weixin_34304013的博客 2024

SHP转TXT、TXT转SHP工具(附工具下载链接)

关于TXT,可以选择整个图层生成一个TXT。也可以勾选“每个地块单独存TXT”,然后选择一个字段,根据字段值,给每个地块生成一个TXT文件。支持选择和数据框一样的坐标系,也可以选择一个图层,工具会采用和这个图层一样的坐标系。1、TXT数据支持输入单个或者多个TXT文件,也可以直接选择TXT所在的文件夹。所有的TXT数据都生成到一个矢量数据图层。关于这一行的内容,可以在地块坐标行设置中进行设置。其他:①面节点闭合:勾选,则回到起点。属性描述:可以直接复制粘贴进来,也可以直接修改。也可以改为任意字母。

坐听风雨 4311

SkyWalking OAP 慢数据库语句(Slow Database Statement)监控:采样原理、阈值配置与实战调优

慢数据库语句(Slow Database Statement)是 SkyWalking OAP 服务端内置的一项核心能力,它基于链路中数据库访问 Span 的耗时采样,自动识别系统中超过阈值的慢 SQL、MongoDB 命令与 Redis 命令,帮助开发者快速定位数据库侧的性能瓶颈。本文以仓库中的官方文档 [slow-db-statement.md](https://link.gitcode.co

gitblog_00772的博客 425

NXP KW45开发实战:如何在MCUXpresso IDE中正确配置J-Link并解决设备识别问题

本文详细介绍了在MCUXpresso IDE中配置J-Link以支持NXP KW45无线MCU开发的实战指南。从环境准备到J-Link深度配置,再到烧录流程优化和高级调试技巧,帮助开发者高效解决设备识别问题并提升开发效率。特别推荐使用JLinkRemoteServer.exe进行多设备并行调试,并提供了烧录速度优化和低功耗调试的实用技巧。

gray5的博客 865

拒绝玄学调优!YashanDB科学分析精准狙击慢SQL

如果一个业务场景前面跑了大量语句,大量SQL占用plancache内存,导致后面的语句在执行完后就被淘汰,每次执行都需要重新走解析,生成计划,那业务系统的整体执行效率会大打折扣。**编写较低效的SQL:**编写的SQL执行了不必要的操作,那么优化器将无法提升其性能,例如:没有连接条件的连接语句(笛卡尔积)、指定大表做驱动表、指定UNION而不是UNION ALL、使用子查询针对外部查询中的每一行执行等。通过命令可以生成如图3的AWR报告,报告包含中数据库信息,快照信息,等待事件、多维度统计慢SQL语句。

cod0410的博客 963

【NLP】第10章 使用基于 BERT 的 Transformer 进行语义角色标记

Transformers 在过去几年里取得的进步比上一代 NLP 还要多。标准 NLU 方法首先学习句法和词汇特征来解释句子的结构。在运行语义角色标签( SRL )之前,将训练以前的 NLP 模型理解语言的基本语法。Shi和Lin(2019)在他们的论文开始时询问是否可以跳过初步的句法和词汇训练。基于 BERT 的模型可以在不经过那些经典训练阶段的情况下执行 SRL 吗?答案是肯定的!Shi和Lin (2019) 建议 SRL 可以被视为序列标记并提供标准化的输入格式。他们基于 BERT 的模型产生了令人惊

sikh_0529的博客 7375

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【MySQL】慢查询日志 Slow Log:定位低效 SQL

<think>我们可用一个摘要概述文章核心内容,不超过150字。文章主要介绍了MySQL慢查询日志的作用、开启配置、参数、分析工具、优化实践。摘要要简洁。</think>MySQL慢查询日志是数据库性能调优的核心工具,用于记录超阈值的SQL,定位瓶颈、指导索引优化。文章详解其开启配置、核心参数、日志解析,并介绍mysqldumpslow与pt-query-digest等分析工具,结合EXPLAIN定位根因,给出轮转维护、参数调优及完整优化案例,帮助实现从被动排查到主动治理。

油墨香^-^的博客 186

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SkyWalking 虚拟数据库(Virtual Database)监控机制详解:从 Span 规范到慢 SQL 采样

在 SkyWalking 中,虚拟数据库(Virtual Database)是一类由服务端 Agent 插件检测、从**数据库客户端视角**抽象出来的数据库节点实体。本指南围绕官方文档 [virtual-database.md](https://link.gitcode.com/i/567f3841c9f5a68e0171ea3f98a5506e) 展开,说明一个数据库访问 Span 需要满足哪些

gitblog_00008的博客 1156

深度学习工具包 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")

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

崖山从0到1系列05-YMP数据库调优

崖山数据库SQL调优

king01299的博客 532

【MySQL】慢查询日志 Slow Log :定位低效 SQL

在 MySQL 数据库运维中,SQL 语句的执行效率直接影响系统响应速度。当网站出现卡顿、接口超时等问题时,慢查询日志(Slow Log) 往往是定位低效 SQL 的 “第一手证据”。它能记录所有执行时间超过阈值的 SQL 语句,帮助我们精准锁定性能瓶颈 —— 无论是全表扫描、索引缺失,还是 JOIN 逻辑不合理,都能通过慢查询日志一探究竟。

专注Java和MySQL领域知识分享 1185

MindStudio Agent:一站式调试调优智能体,支持高效端到端性能调优

过去,MindStudio提供了性能调优工具msProf,集群分析工具msprof-analyze,精度调优工具msProbe,内存调优工具msMemScope,可视化工具msInsight等一系列工具来帮助客户提高算子性能、设备性能、集群性能,同时MindStudio也沉淀了计算(算子调优),通信(快慢卡),下发(Host下发慢),IO瓶颈以及服务化等一系列的调试调优方法论。更多内置 Tools:例如精度,内存等工具,让调优的覆盖面更广,数据来源更多,调优定位更准,扩展Agent的能力边界。

优快云资讯 463
上一篇: Controller层代码问题及解决方法!
下一篇: synchronized锁失灵?
架构文摘JGWZ
博客等级 码龄5年 8808粉丝 345原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值