MySQL日志

MySQL-三大日志详解 三大日志 日志分为二类 逻辑日志:可以简单理解为记录的就是sql语句。 物理日志:因为mysql数据最终是保存在数据页中的,物理日志记录的就是数据页变更。 undo log undo log 记录数据被修改前的样子 作用 防止丢失数据,用于事务失败后的回滚 Innodb 存储引擎的最大特点就是支持事务,如果本次更新失败,那么该事务中的所有的操作都必须回滚到执行前的样子,也就是说当事务失败的时候,也不会对原始数据有影响 记录时机 在mysql将要更新的数据加载到缓冲区Buffer pool 时,同时 阅读详情

MySQL日志是记录数据库活动的重要工具,用于故障排查、性能分析、安全审计和数据恢复。MySQL提供了多种类型的日志,每种日志都有特定的用途和配置方式。合理配置和使用这些日志可以提高数据库的可维护性和安全性。

一、错误日志(Error Log)

错误日志是MySQL中最基本的日志,记录了MySQL服务器启动、运行和关闭过程中的错误信息、警告信息和通知信息,是排查服务器启动故障的主要依据。

1. 记录内容

- 服务器启动和关闭过程的信息

- 服务器运行中的错误信息(如连接失败、存储引擎错误等)

- 服务器运行中的警告信息(如配置参数不推荐使用)

- 重要的通知信息(如日志滚动、备份相关信息)

2. 配置方法

[mysqld]
# 启用错误日志(默认启用)
log_error = /var/log/mysql/error.log

# 错误日志级别(5.7.2+):debug, info, note, warning, error
log_error_verbosity = 3  # 3表示记录note、warning、error,默认值

3. 查看错误日志

-- 查看错误日志位置
SHOW VARIABLES LIKE 'log_error';

-- 查看最近的错误日志内容(Linux)
tail -n 100 /var/log/mysql/error.log

-- 实时查看错误日志(Linux)
tail -f /var/log/mysql/error.log

4. 日志轮转

错误日志会不断增长,需要定期轮转,避免占用过多磁盘空间:

-- 方法1:使用mysqladmin
mysqladmin -u root -p flush-logs

-- 方法2:使用SQL命令
FLUSH ERROR LOGS;

-- 方法3:配置logrotate(推荐)
# 创建配置文件 /etc/logrotate.d/mysql
/var/log/mysql/error.log {
    daily
    rotate 7
    missingok
    compress
    delaycompress
    postrotate
        mysqladmin -u root -p密码 flush-logs
    endscript
}

二、通用查询日志(General Query Log)

通用查询日志记录MySQL服务器执行的所有SQL语句和连接信息,包括客户端连接、断开连接以及执行的所有SQL命令。由于会记录所有操作,对性能有一定影响,通常不建议在生产环境长期开启。

1. 记录内容

- 客户端连接和断开连接的信息(包括客户端IP、用户名)

- 客户端执行的所有SQL语句(包括SELECT、INSERT、UPDATE、DELETE等)

- 服务器端执行的 administrative 命令

2. 配置方法

[mysqld]
# 启用通用查询日志
general_log = 1

# 日志文件路径
general_log_file = /var/log/mysql/general.log

# 日志输出方式:FILE(文件)或 TABLE(mysql.general_log表)
log_output = FILE

3. 动态开启/关闭

-- 查看当前状态
SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'general_log_file';

-- 临时开启
SET GLOBAL general_log = 1;

-- 临时关闭
SET GLOBAL general_log = 0;

-- 临时修改日志文件
SET GLOBAL general_log_file = '/var/log/mysql/new_general.log';

4. 使用场景

- 调试特定问题时临时开启,追踪应用程序执行的SQL语句

- 审计特定时间段的数据库操作

- 排查应用程序与数据库的交互问题

三、慢查询日志(Slow Query Log)

慢查询日志记录执行时间超过指定阈值的SQL语句,是性能优化的重要工具,帮助识别需要优化的低效查询。

1. 记录内容

- 执行时间超过long_query_time阈值的SQL语句

- 未使用索引的SQL语句(需开启log_queries_not_using_indexes)

- 查询的执行时间、锁定时间、扫描行数、返回行数等信息

- 执行查询的用户和主机信息

2. 配置方法

[mysqld]
# 启用慢查询日志
slow_query_log = 1

# 慢查询日志文件路径
slow_query_log_file = /var/log/mysql/slow.log

# 慢查询时间阈值(秒),默认10秒
long_query_time = 2

# 记录未使用索引的查询
log_queries_not_using_indexes = 1

# 记录管理语句(如ALTER TABLE, ANALYZE TABLE等)
log_slow_admin_statements = 1

# 日志输出方式:FILE或TABLE(mysql.slow_log表)
log_output = FILE

3. 动态配置

-- 临时开启慢查询日志
SET GLOBAL slow_query_log = 1;

-- 修改慢查询阈值(单位:秒,支持小数)
SET GLOBAL long_query_time = 1.5;

-- 开启记录未使用索引的查询
SET GLOBAL log_queries_not_using_indexes = 1;

4. 分析慢查询日志

① 使用mysqldumpslow工具(MySQL自带):

-- 查看使用最多的10条慢查询
mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

-- 查看执行时间最长的10条慢查询
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

-- 查看扫描行数最多的10条慢查询
mysqldumpslow -s r -t 10 /var/log/mysql/slow.log

② 使用pt-query-digest(Percona Toolkit工具):

pt-query-digest /var/log/mysql/slow.log > slow_query_analysis.txt

四、二进制日志(Binary Log)

二进制日志(binlog)记录所有数据修改操作(如INSERT、UPDATE、DELETE),不记录查询操作(如SELECT)。主要用于数据恢复和主从复制,是MySQL高可用架构的基础组件。

1. 记录内容

- 数据库的所有修改操作(CRUD中的CUD操作)

- 操作的时间、日志位置等元数据

- 不记录SELECT、SHOW等只读操作

2. 二进制日志格式

① STATEMENT格式(基于语句):

记录执行的SQL语句,日志体积小,但某些函数(如NOW()、UUID())可能导致主从数据不一致。

② ROW格式(基于行):

记录每行数据的变化,能保证主从数据一致,但日志体积较大。MySQL 5.7+默认使用该格式。

③ MIXED格式(混合模式):

默认使用STATEMENT格式,对可能导致不一致的操作自动切换为ROW格式。

3. 配置方法

[mysqld]
# 启用二进制日志
log_bin = /var/log/mysql/binlog

# 服务器ID,主从复制必须配置,每个实例唯一
server-id = 1

# 二进制日志格式:STATEMENT, ROW, MIXED
binlog_format = ROW

# 二进制日志过期时间(天)
expire_logs_days = 7

# 单个二进制日志文件大小限制(默认1GB)
max_binlog_size = 100M

# 同步写入磁盘(安全性高,性能略低)
sync_binlog = 1

4. 二进制日志管理

-- 查看二进制日志列表
SHOW BINARY LOGS;

-- 查看当前使用的二进制日志
SHOW MASTER STATUS;

-- 查看二进制日志内容(需指定日志文件)
SHOW BINLOG EVENTS IN 'binlog.000001';

-- 刷新二进制日志(创建新的日志文件)
FLUSH BINARY LOGS;

-- 删除指定日志文件之前的所有日志
PURGE BINARY LOGS TO 'binlog.000005';

-- 删除指定日期之前的所有日志
PURGE BINARY LOGS BEFORE '2023-10-01 00:00:00';

-- 临时关闭二进制日志(当前会话)
SET SQL_LOG_BIN = 0;

-- 重新开启二进制日志(当前会话)
SET SQL_LOG_BIN = 1;

5. 二进制日志的应用

① 数据恢复:

-- 使用mysqlbinlog工具恢复数据
mysqlbinlog --start-datetime="2023-10-01 08:00:00" --stop-datetime="2023-10-01 09:00:00" /var/log/mysql/binlog.000001 | mysql -u root -p

-- 按位置恢复
mysqlbinlog --start-position=107 --stop-position=490 /var/log/mysql/binlog.000001 | mysql -u root -p

② 主从复制:二进制日志是主从复制的基础,主库通过二进制日志将数据变化同步到从库。

五、中继日志(Relay Log)

中继日志是从库(Slave)在主从复制过程中使用的日志,用于存储从主库(Master)获取的二进制日志内容,然后由从库的SQL线程应用这些日志。

1. 工作原理

- 从库的IO线程从主库读取二进制日志,写入本地中继日志

- 从库的SQL线程读取中继日志,执行其中的SQL语句,实现数据同步

- 中继日志格式与二进制日志完全相同

2. 配置方法

[mysqld]
# 中继日志文件路径
relay_log = /var/log/mysql/relaylog

# 中继日志索引文件
relay_log_index = /var/log/mysql/relaylog.index

# 中继日志自动删除(默认开启)
relay_log_purge = 1

# 从库延迟复制(秒)
delay_key_write = ALL

3. 中继日志管理

-- 查看从库状态(包含中继日志信息)
SHOW SLAVE STATUS\G

-- 手动删除中继日志
RESET SLAVE;  -- 停止复制并删除中继日志

-- 重置从库配置(保留中继日志)
RESET SLAVE ALL;  -- MySQL 5.5.16+

六、事务日志(InnoDB Logs)

InnoDB存储引擎有自己的事务日志,包括重做日志(Redo Log)和撤销日志(Undo Log),用于保证事务的ACID特性和崩溃恢复。

1. 重做日志(Redo Log)

重做日志记录InnoDB存储引擎的所有数据修改操作,用于崩溃恢复,确保已提交的事务不会丢失(持久性)。

(1)特点

- 物理日志,记录数据页的修改

- 循环写入,固定大小,不会无限增长

- 写入速度快,优先于数据文件写入

(2)配置方法
[mysqld]
# 重做日志文件路径(默认在数据目录)
innodb_log_group_home_dir = /var/lib/mysql/

# 单个重做日志文件大小
innodb_log_file_size = 500M

# 重做日志文件数量(通常为2)
innodb_log_files_in_group = 2

# 日志刷盘策略:1-事务提交时刷盘(最安全),0-每秒刷盘,2-提交时写入OS缓存
innodb_flush_log_at_trx_commit = 1

2. 撤销日志(Undo Log)

撤销日志记录数据修改前的状态,用于事务回滚和多版本并发控制(MVCC)。

(1)特点

- 逻辑日志,记录数据修改前的状态

- 用于事务回滚和读取历史版本数据

- MySQL 5.6+支持独立的撤销表空间

(2)配置方法
[mysqld]
# 启用独立撤销表空间(MySQL 5.6+)
innodb_undo_directory = /var/lib/mysql/undo/
innodb_undo_logs = 128  # 撤销日志段数量
innodb_undo_tablespaces = 4  # 独立撤销表空间文件数量

# 自动截断undo日志(MySQL 5.7+)
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 1G  # 触发截断的大小

七、日志管理最佳实践

1. 日志配置原则

- 错误日志:始终开启,用于排查服务器问题

- 二进制日志:建议开启,用于数据恢复和主从复制

- 慢查询日志:建议开启,用于性能优化,阈值根据业务调整

- 通用查询日志:默认关闭,仅在调试时临时开启

- InnoDB事务日志:按性能和安全性需求合理配置

2. 日志存储管理

- 将日志文件与数据文件存储在不同的磁盘,提高性能和安全性

- 配置合理的日志轮转策略,避免磁盘空间耗尽

- 重要日志文件定期备份,特别是二进制日志

- 对日志文件设置适当的权限(如mysql用户只读)

3. 性能与安全平衡

- 日志会消耗系统资源,特别是通用查询日志和详细的慢查询日志

- 对于写入频繁的系统,sync_binlog=1和innodb_flush_log_at_trx_commit=1会影响性能,但提供最高安全性

- 生产环境中避免开启log_queries_not_using_indexes=1,可能产生大量日志

4. 日志监控与分析

- 定期检查错误日志,及时发现潜在问题

- 建立慢查询日志分析机制,定期优化慢查询

- 监控日志文件大小,避免占用过多磁盘空间

- 结合监控工具(如Prometheus + Grafana)设置日志相关告警

5. 日志安全

- 限制日志文件的访问权限,防止敏感信息泄露

- 对于包含敏感数据的日志,考虑加密存储或定期清理

- 重要操作的日志(如权限变更)需长期保存,用于审计

【MySQL】MySQL日志的开启及查看 MySQL日志 阅读详情

相关推荐

想发故障诊断论文?手把手教你用CWRU数据集复现第一个Baseline模型

本文提供了一份基于CWRU轴承数据集的故障诊断Baseline模型实战指南,手把手教你从数据准备到模型构建的全流程。通过详细的Python代码示例和学术级实验设计,帮助初学者快速复现第一个故障诊断模型,为发表高质量论文奠定基础。

weixin_28681255的博客 428

mysql 日志级别_MySQL 日志初探

MySQL 日志初探零、概述MySQL 的日志分为 Error Log(错误日志),General Query Log(通用查询日志)、Slow Query Log(慢查询日志)、Binary Log(BinLog),各种日志各有各的用处和配置方式,接下来进行简单的介绍。一、Error Log(错误日志)错误日志记录了数据库服务器的启停、故障或异常情况及警告等信息。Error Log 默认开启,并...

weixin_30768979的博客 2626

手把手教你用Logisim搭建5级流水MIPS CPU(附华中科技计组实验避坑指南)

本文详细介绍了如何使用Logisim从零构建5级流水MIPS CPU,特别针对华中科技大学计算机组成原理实验提供实用指南。内容涵盖单周期CPU过渡、流水线寄存器设计、数据冒险处理等核心环节,并附有实验避坑建议和性能优化技巧,帮助学生高效完成这一挑战性项目。

weixin_42532938的博客 372

MySQL的日志的级别和写入方式是怎样的?底层原理是什么?

错误日志: 错误日志是记录MySQL服务器运行过程中出现的所有错误和警告信息的日志,包括启动、关闭、连接、查询等操作的错误和警告信息。重做日志: 重做日志是MySQL服务器在执行事务期间记录数据更改的日志,它的作用是在发生故障时,将未持久化到磁盘的数据重新写入磁盘,保证数据的一致性。以上日志的写入方式都采用了追加写入或循环写入的方式,这种写入方式可以避免频繁的随机写入操作,提高写入性能。同时,MySQL的日志也支持异步写入和缓存写入的方式,这种写入方式可以进一步提高写入性能和降低写入时的延迟。

长风破浪会有时的博客 356

[事件相机1]2024CVPR:Event Stream-based Visual Object Tracking: A High-Resolution Benchmark Dataset

作者:Xiao Wang, Shiao Wang, Chuanming Tang, Lin Zhu, Bo Jiang, Yonghong Tian, Jin Tang代码:https://github.com/Event-AHU/EventVOT_Benchmark。

m0_37412775的博客 1707

大模型和任务型对话系统如何结合

三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。

qq_29837229的博客 2451

数据库日志级别解析:(2022.2.21-2022.2.27)

数据库的日志种类有:redo_log,undo_log,binlog,rely_log,error_log,slow_query_log,general_log; redo_log:重做日志,保证了事务的持久性,一般事务开启的时候,重做日志也启动了,持久化的三种方式分别为:1.每一秒进行持久化; 2.每一次commit的时候进行持久化;3.默认的为占用剩余内存空间一半的时候自动持久化; undo_log:回滚日志,保证了事务的原子性和隔离性,在事务执行失败或者回滚的时候,就会启动该日志...

yuhuochongsheng_的博客 1006

游戏封包抓取实战:雷电模拟器+ProxyDroid+查尔斯3.93+WPE全流程解析

本文详细解析了使用雷电模拟器、ProxyDroid、查尔斯3.93和WPE进行游戏封包抓取的全流程实战。通过环境搭建、代理配置与工具协同,手把手教你抓取HTTP/HTTPS及原始Socket数据,涵盖从流量转向、证书安装到数据分析和常见问题排查,是学习游戏网络协议分析与安全测试的实用指南。

u8v9w0x1y的博客 445

mysql从高到底排序_Log日志级别从高到低排序 ERROR、WARN、INFO、DEBUG

说明:我们项目中没有加载,log日志有四个,大家可以在log4j文件中进行配置。日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):s...

weixin_33404919的博客 1061

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3913

mysql 日志

慢查询日志主要用来记录查询时间较长的日志。在开发环境下,可以开启慢查询日志来记录查询时间较长的查询语句,然后对这些语句进行优化。通过配置long_query_time的值,可以灵活地掌握不同程度的慢查询语句

一路向前 3357

开源3D激光SLAM算法的异同点、优劣势与适配场景总结

本文对比分析了主流开源3D激光SLAM方案的核心差异与适用场景。LOAM架构简洁但精度较低;LeGO-LOAM轻量化适合地面机器人;LIO-SAM采用因子图优化支持多传感器融合;LVI-SAM通过视觉-激光-惯性三重冗余提升鲁棒性;FAST-LIO系列基于滤波架构实现超高实时性。选型需权衡传感器配置(纯激光/激光+IMU/激光+视觉)、运动状态(高速/常规)、计算资源等因素:资源受限选LeGO-LOAM或Faster-LIO,高速运动选FAST-LIO系列,退化环境选LVI-SAM,全局一致性需求选LIO-

Studying…… 651

mysql里面的日志

一、日志类型 MySQL 中有七种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。 二、日志作用 1.二进制日志(binlog) binlog 主要有以下作用: 复制:MySQL 主从复制在 Master 端开启 binlog,Master 把它的二进制日志传递给 slaves 并回放来达到 master-

pengchenxin的博客 8805

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【MySQL高级】MySQL的日志

二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从 , 就是通过该binlog实现的。二进制日志,MySQl8.0默认已经开启,低版本的MySQL的需要通过配置文件开启,并配置MySQL日志的格式。Windows系统:my.ini Linux系统:my.cnf。

dzqxwzoe的博客 2421

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySQL的日志总结

前言 MySQL中有以下日志文件,分别是:   1:重做日志(redo log)   2:回滚日志(undo log)   3:二进制日志(binlog)   4:错误日志(errorlog)   5:慢查询日志(slow query log)   6:一般查询日志(general log)   7:中继日志(relay log)。 其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。 一、重做日志(red

红鱼儿的博客 2614

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【MySQL】日志

MySQL日志学习

gma999的博客 1116

MySQL的日志

慢日志主要是用于以文本形式记录数据库服务运行过程中,执行过程较慢的语句;利用慢日志信息生成的信息,可以在日常巡检过程中,通过日志定位SQL语句性能问题;:0关闭,1开启:义慢查询日志存储路径以及名称信息:查询耗时超时设置:没有走索引的语句会记录到慢查询日志中;0关闭,1开启。

qq_73797346的博客 1940

MySQL七种日志总结

mysql日志

myroncham的博客 5391

MySQL——MySQL 日志

参数文件(my.cnf / my.ini):MySQL的配置文件,包含服务器参数设置,如内存分配、连接数、字符集等;该文件通常在MySQL启动时读取;socket文件(.sock):用于进程间通信,允许客户端和MySQL服务器通过Unix套接字连接;TCP/IP 连接是通过网络协议进行的,适用于远程连接到MySQL服务器。这种方式用于客户端和MySQL服务器在不同的物理主机上时的连接。支持跨网络连接,可用于互联网或本地网络。

longool的博客 1204

【MySQL】日志详解

本文使用的MySQL版本是8。介绍了MySQL常见的日志。

p_fly的博客 1330

【MySQL】常见的MySQL日志都有什么用?

MySQL日志的内容非常重要,面试中经常会被问到。同时,掌握日志相关的知识也有利于我们理解MySQL 底层原理,必要时帮助我们排查解决问题。主要介绍了二进制i日志、慢查询日志、重做日志、撤销日志

关关的博客 2122

MySQL日志详解

错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。

一起努力共同进步,为了未来一起奋斗吧! 2029
上一篇: MySQL管理
下一篇: MySQL主从复制
learning_tom
博客等级 码龄1年 157粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值