MySQL优化技术(一)

MySQL/Oracle数据库优化总结(非常全面) 阅读详情

转载:https://blog.youkuaiyun.com/qq296398300/article/details/53931508

MySQL优化技术(一)

        开发的路上,总会碰到一些老系统,越用越慢。“慢”的原因也许有很多,但是,博主个人觉得,数据库的设计和sql语句写的好坏,对系统效率的影响是最直接,最显而易见的!所以,学习一下MySQL的优化,还是很有必要的。当然,博主能力有限,没那么多经验,更多的是“道听途说”和“纸上谈兵”。如有不正之处,望大神开后给予指正,不胜感激!

(一)MySQL优化技术概述

①表的设计合理化(符合3NF,即符合“三范式”。当然也要照顾“反范式”,要灵活);

②添加适当索引(index)(主要包括:普通索引、主键索引、唯一索引unique、全文索引);

③SQL语句本身的优化(主要包括:避免全表扫描、避免嵌套子查询等);

④分表技术(水平分割、垂直分割);

⑤读写分离(其中写包括:update/delete/add);

⑥存储过程(模块化编程,可以提高速度,但是迁移性差,对服务器压力也会逐渐增大);

⑦对mysql配置优化(主要是修改my.ini配置文件的参数信息)

⑧mysql服务器硬件升级

⑨定时的去清除不需要的数据,定时进行碎片整理(特别是使用了MyISAM)

(二)表的设计合理化

1.“三范式”(3NF)的概念

第一范式:1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数据库都满足1NF) ;

第二范式:2NF是在1NF满足的基础上,对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式:3NF是在2NF满足的基础上,对字段冗余性的约束,要求字段没有冗余,也可以称为消除依赖传递。

2.“反范式”(3NF)的概念

反范式:是通过增加冗余数据来提高数据库读性能的过程。

反范式出现的原因:当我们的业务所涉及的表非常多,经常会有多表联查,这样它的效率就会大打折扣,这时我们就可以考虑使用“反范式”。增加必要的,有效的冗余字段,用空间来换取时间,在查询时减少或者是避免过多表之间的联查。

3.举例

以传智博客视频教程(业内良心,某宝2元钱买能一堆)中一个老项目为例,当时听得时候,觉得老师讲得神乎其神,列举其中的几个关键词,大家听听:三范式与反三范式、分散计算思想、打断设计、添加冗余、跳跃查询、数据搬家等等。咋一听很能“蒙人”,后来博主画图总结了一下,其实,一说就破,很简单。

 

 

 

(三)Sql语句自身的优化

1.SHOW [ SESSION|GLOBAL ] STATUS指令的应用

#1.累计启动多少秒

SHOW STATUS LIKE 'uptime'

 

#2.累计查询/新增/修改/删除多少次

SHOW STATUS LIKE 'com_select'

SHOW STATUS LIKE 'com_insert'

SHOW STATUS LIKE 'com_update'

SHOW STATUS LIKE 'com_delete'

#注意:默认是SESSION当前会话级别的统计,全局的需要加上GLOBAL关键字

#默认的,当前会话级别的统计

SHOW SESSION STATUS LIKE 'com_select'

#全局的,统计从始至终

SHOW GLOBAL STATUS LIKE 'com_select'

 

#3.显示慢查询次数

SHOW GLOBAL STATUS LIKE 'slow_queries'

#显示当前慢查询时间,默认10秒

SHOW VARIABLES LIKE 'long_query_time'

#修改慢查询时间

SET long_query_time = 5

 

2.如何记录及定位慢查询

在默认情况下,我们的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以:

bin\mysqld.exe - -safe-mode  - -slow-query-log

[mysql5.5 以上可以在my.ini指定]

先关闭mysql,再启动, 如果启用了慢查询日志,默认把这个文件放在my.ini 文件中记录的位置:

#Path to the database root

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

查看慢查询日志:默认为数据目录data中的host-name-slow.log。

(四)建立适当的索引

说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的‘create index’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的I/O。

索引主要分为:普通索引、主键索引、唯一索引、全文索引四大类,下面进行逐一说明:

1.索引添加

(1)主键索引添加

当一张表,把某个列设为主键的时候,则该列就是主键索引:

create table aaa

(id int unsigned primary key auto_increment ,name varchar(32) not null defaul ‘’);

这时id 列就是主键索引。

如果你创建表时,没有指定主键索引,也可以在创建表后,再添加(不常用), 指令:

alter table 表名 add primary key (列名)

(2)普通索引

一般来说,普通索引的创建,是先创建表,然后再创建普通索引,比如:

create table 表名(

     id int unsigned,

     name varchar(32)

)create index索引名 on 表 (列1,列名2);

(3)创建全文索引

全文索引,主要是针对文件,文本的检索, 比如文章,全文索引针对MyISAM有用。

创建 :

CREATE TABLE articles (

       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

       title VARCHAR(200),

       body TEXT,

       FULLTEXT (title,body)

     )engine=myisam charset utf8;

INSERT INTO articles (title,body) VALUES

     ('MySQL Tutorial','DBMS stands for DataBase ...'),

     ('How To Use MySQL Well','After you went through a ...'),

     ('Optimizing MySQL','In this tutorial we will show ...'),

     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

     ('MySQL vs. YourSQL','In the following database comparison ...'),

     ('MySQL Security','When configured properly, MySQL ...');

如何使用全文索引:

错误用法:

select * from articles where body like‘%mysql%’;【不会使用到全文索引】

证明:

explain  select * from articles where body like ‘%mysql%’

正确的用法是:

select * from articles where match(title,body) against(‘database’);

*注意事项:

1.在mysql中fulltext 索引只针对MyISAM生效;

2.mysql自己提供的fulltext针对英文生效->sphinx (coreseek) 技术处理中文;

3.使用方法是 match(字段名..) against(‘关键字’);

4.全文索引一个叫停止词,  因为在一个文本中,创建索引是一个无穷大的数,因此,对一些常用词和字符,就不会创建,这些词,称为停止词。

(4)唯一索引

①当表的某列被指定为unique约束时,这列就是一个唯一索引。

create table ddd(id int primary key auto_increment , name varchar(32)unique);

这时, name 列就是一个唯一索引。

注意:unique字段可以为NULL,并可以有多NULL, 但是如果是具体内容,则不能重复。

主键字段,不能为NULL,也不能重复。

②在创建表后,再去创建唯一索引。

create table eee(id int primary key auto_increment, name varchar(32));

create unique index 索引名  on表名 (列表..);

2.查询索引

desc 表名 【该方法的缺点是:不能够显示索引名.】

show index(es) from 表名\G

show keys from 表名\G

3.删除

alter table 表名 drop index 索引名;

如果删除主键索引。

alter table 表名 drop primary key       [这里有一个小问题]

4.修改

先删除,再重新创建.

5.索引的原理

(1)数据库的三层结构简图

 

(2)原始的查询图解

     

     原始的查询方法,查到number = 3后,仍然会往后查询,以为不确保后面是否有重复数据,所以是全表检索。至少要查询8次。

(2)对number建立索引后的查询图解

       

建立索引后,数据库会将索引字段,进行基于二叉树(B Tree / B+ Tree)的形式改造,并存储在“表名.MYI”的文件中。其后,再次查询时,只需查询2次即可,而且树节点记录的是物理地址,可以直接定位到元素,这样它的效率就大大的提高了。

6.索引的代价

①占用磁盘空间;

②对DML操作有影响,变慢;

7.何时创建索引

①较频繁的作为查询条件字段应该创建索引

select * from emp where empno = 1

②唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

select * from emp where sex = ‘男’

③更新非常频繁的字段不适合创建索引

select * from emp where logincount = 1

④不会出现在WHERE子句中字段不该创建索

8.使用索引时的注意事项

创建如下复合索引:

    alter table dept add index my_ind (dname,loc);   # dname 左边的列,loc就是右边的列

如果我们的表中有复合索引(索引作用在多列上), 此时我们注意:

①对于创建的复合索引,只要查询条件使用了最左边的列,索引一般就会被使用。

    explain select * from dept where loc= 'aaa'; #不会使用到索引

②对于使用like的查询,查询如果是‘%aaa’/‘_aaa’ 不会使用到索引,‘aaa%’/‘aaa_’ 会使用到索引。

    explain select * from dept where dname like '%aaa'; #不会使用到索引

如果一定要前面有变化的值,则考虑使用全文索引->sphinx.

③如果条件中有or,即使其中有条件带索引也不会使用。换言之,就是要求使用的所有字段,都必须建立索引, 我们建议大家尽量避免使用or 关键字

   select * from dept where dname=’xxx’ or loc=’xx’ or deptno=45; #不会使用到索引

④如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。(添加时,字符串必须’’), 也就是,如果列是字符串类型,就一定要用 ‘’ 把他包括起来。

⑤如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

8.explain的应用

explain可以帮助我们在不真正执行某个sql语句时,就执行mysql怎样执行,这样利用我们去分析sql指令。

如何查看索引使用的情况:

   show status like ‘Handler_read%’;

华为技术人的“百万级”MySQL笔记,基础+优化+架构一学即会 未来究竟会是什么样?我没是没有办法预言的,可能你说大数据是潮流,人工智能是趋势,但十年后究竟是什么样,我们谁也不知道。都说30岁后的程序员就要陷入焦虑,但无论你处于什么行业,年轻的几年里不抓住,过了30岁也一样的会焦虑。所以,如果你不做探索未来的人,那么就要做好站稳在金字塔尖的人,这本百万级的MySQL笔记或许可以帮助你离梦想更近一步。 阅读详情

相关推荐

DESeq2实战:利用LRT检验解析时间序列基因表达动态变化

本文详细介绍了如何使用DESeq2中的LRT检验分析时间序列基因表达数据,揭示基因表达动态变化模式。通过构建完整模型与简化模型比较,LRT检验能有效识别处理效应随时间变化的基因,适用于发育过程、疾病进展等研究。文章提供了从数据准备、模型构建到结果可视化的完整实战指南,并分享了高级技巧与常见问题排查方法。

weixin_29062671的博客 439

MySQL数据库优化的八种方式(经典必看)

MySQL/Oracle数据库优化总结(非常全面) 置顶2017年08月21日 21:05:30 阅读数:8442 MySQL数据库优化的八种方式(经典必看) 引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂 偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助 1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是.

repoman的博客 3万+

基于Multisim的模电调幅发射机仿真设计

振荡器产生的高频信号的功率很小,所以有必要对高频信号进行功率放大,有利于信号的调制发射。缓冲电路将主振荡器和高频功放电路相隔离,以减小功放电路对主振荡器的影响。缓冲电路可以用射极跟随器电路来实现,其作用就是前后级的阻抗相互匹配,减小前后级的影响。总电路的仿真结果见下图:示波器1~4分别是主振荡器、缓冲电路、高频放大电路和调幅电路的输出波形。由于载波频率稳定度≤10-3,所以可以采用并联型改进电容反馈式三端振荡器(Seiler电路)谐振回路,滤除其他频率的成分,得到与载波(假设。(1)缓冲电路的设计与实现。

Eve223322的博客 4566

实践中如何优化MySQL(精)

目录 ① SQL语句及索引的优化 SQL语句的优化: 1、尽量避免使用子查询 ​2、避免函数索引 3、用IN来替换OR 4、LIKE前缀%号、双百分号、_下划线查询非索引列或*无法使用到索引,如果查询的是索引列则可以 5、读取适当的记录LIMIT M,N,而不要读多余的记录 6、避免数据类型不一致 7、分组统计可以禁止排序sort,总和查询可以禁止排重用union all 8、...

张花生的博客 5万+

OV5640摄像头DVP与MIPI接口配置实战:从30Hz到60Hz的性能优化指南

本文详细解析了OV5640摄像头在DVP与MIPI接口下的60Hz性能优化方法,重点解决720p分辨率下帧率仅30Hz的常见问题。通过精确配置时钟树、传感器寄存器和接口参数,提供DVP与MIPI接口的实战配置代码,并分享调试工具与性能验证技巧,帮助开发者实现稳定的60fps输出。

weixin_29223603的博客 1300

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

Mysql 优化的几种方法

MySQL优化是指通过调整MySQL的各项参数和配置,以及优化SQL语句的编写和执行,提高MySQL系统的性能和可用性。MySQL优化的主要目标是尽可能快地响应用户请求,提高系统的处理能力和并发性能,减少资源消耗和硬件成本。MySQL优化涉及多个方面,包括:1.硬件配置:包括CPU、内存、磁盘等硬件资源的选择和配置,以满足系统的负载和性能需求。2.软件配置:包括MySQL的参数设置和调整,如缓存大小、连接数、并发处理数等,以适应不同的负载和访问模式。

兴趣是最好的老师,勤能补拙 7101

安装部署 Guacamole 远程桌面网关

Guacamole 是Apache基金会提供的一组基于web的远程桌面访问工具,支持 VNC、RDP、SSH、 Telnet 等协议,支持远程透传音视频。

UsamaBinLaden6976498的专栏 1963

​MySQL优化常用的19种方法​

SQL优化常用的19种方法​

wy971744839的博客 3485

一文搞懂雷达脉冲压缩和匹配滤波器

为了解决传统单频脉冲雷达面临的作用距离和空间分辨力之间的矛盾,脉冲压缩理论被提出。在接收端设计一个和发射信号能够“共轭匹配”的网络来实现脉冲压缩。接收到的回波信号通过匹配滤波器时,滤波器的增益在信号越强的频率点越大;在信号越弱的频率点,增益越小,通过这样的方式使信号在时域更加集中。脉冲压缩技术大致可分为线性调频(LFM)和相位编码。其中LFM信号易于通过硬件或各种技术产生,但是进行匹配滤波后主旁瓣比高达13.2dB,在检测多个目标时,强目标的回波旁瓣可能会把弱小信号覆盖,导致弱小信号的检测受到影响。

FPGA入门到跑路 9933

QT邂逅豆包API:打造专属文章生成神器

通过本次探索,我们成功基于 QT 调用豆包 API 开发出了文章生成工具。从前期的准备工作,到核心代码的实现,再到功能的拓展与优化,每一步都凝聚着技术的魅力与挑战。我们学会了申请豆包 API 密钥,搭建 QT 开发环境,创建网络请求类来与豆包 API 进行交互,构建请求体并解析响应,还为工具添加了友好的界面交互,提升了性能。

大雨淅淅的博客 1970

MySQL数据库优化技术一

MySQL数据库的优化技术,从数据库设计的基本字段类型开始分析优化,让表的设计更贴近数据库的原生设计,从而达到优化的目的;并介绍一些数据库的常用手段和名词概念,比如:MySQL数据库的视图、触发器、函数、存储过程的使用场景和优化场景

dkjhl的博客 756

CANoe UDS $27服务DLL生成实战:从工程配置到算法修改全流程

本文详细介绍了在Vector CANoe中为UDS(统一诊断服务)的$27安全访问服务生成定制化DLL(动态链接库)的全流程。从定位官方参考工程、配置Visual Studio开发环境,到深入解析核心的GenerateKeyEx函数接口,并重点演示了如何修改和实现自定义的种子-密钥安全算法,最终完成DLL的编译、部署与CANoe集成测试,为汽车电子诊断开发提供实战指导。

star5的专栏 534

【JAVA秒会技术之玩转SQL】MySQL优化技术(一)

MySQL优化技术(一)         开发的路上,总会碰到一些老系统,越用越慢。“慢”的原因也许有很多,但是,博主个人觉得,数据库的设计和sql语句写的好坏,对系统效率的影响是最直接,最显而易见的!所以,学习一下MySQL的优化,还是很有必要的。当然,博主能力有限,没那么多经验,更多的是“道听途说”和“纸上谈兵”。如有不正之处,望大神开后给予指正,不胜感激! (一)MySQL优化技术概述

qq296398300的博客 2612

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

mysql优化技术之(一)设计优化

作为一个开发者,数据库优化方案几乎是必须要掌握的技术,从今天开始给大家逐渐介绍数据库优化技术 包括设计优化,sql优化等,希望能给初学者或者即将参加工作的童鞋们一点借鉴,水平有限,如有纰漏,多多包涵       通常数据库优化必须满足的4个特点 数据库设计优化数据库SQL语句优化数据库配置优化硬件支持   一:首先学习数据库设计范式 1NF一范式:数据库列具有原子性,直到不可以

Iampdc 299

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

MySQL优化(一) 优化关键技术

MySql的优化是一个综合性的技术,主要包括有: (1)表的设计合理化(符合 3NF 三范式) (2)添加适当的索引(Index);索引分类:普通索引、主键索引、唯一索引、全文索引(文本)、空间索引。 (3)分表技术(水平分割、垂直分割) (4)读写分离(写:update/add/delete) (5)存储过程(分页存储过程/触发器):存储过程是编译好的语句,普通的sql语句需要经过编...

weixin_30500663的博客 144

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

mysql 索引技术优化_MySQL 优化一(扫盲加索引介绍)(高级篇)

mysql性能下降的原因?根本:sql执行慢要么就是cpu计算复杂 要么就是频繁的IO开销1.首先进入linux打top 看看是否是内存不够 cpu占满 磁盘满了 或者其他硬件方面的原因!这些排除了再去找sql的原因!2.假设真的排除了上边的原因 那么我们再去找sql的原因一般性能下降sql慢的原因:执行时间长 或者 等待时间长导致执行时间或者查询时间长的原因是:a.查询语句写的烂(解释:各种子查...

weixin_39642981的博客 108

MySQL查询优化器--逻辑查询优化技术(一)--视图重写

视图重写 MySQL支持对视图的优化。优化方法是把视图转为对基表的查询,然后进行类似子查询的优化。通常能优化简单视图,复杂视图不能优化。   示例: 创建表 CREATE TABLE t1 (a1 int UNIQUE, b1 int); CREATE TABLE t2 (a2 int UNIQUE, b2 int); CREATE TABLE t3 (a3 int UNIQUE

那海蓝蓝的博客 879

大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)

一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量优化图片和视频的大小)        2:并发量:同时访问 -->解决方案:修改程序的架构(服务器集群)   服务器集群:就是指...

139

《MySQL性能优化和高可用架构实践》阅读总结

文章目录介绍第1章 MySQL架构介绍1.1 MySQL简介1.2 MySQL主流的分支版本1.3 MySQL存储引擎1.4 MySQL逻辑架构1.5 MySQL物理文件体系结构第2章 InnoDB存储引擎体系结构2.1 缓冲池2.2 change buffer2.3 自适应哈希索引2.4 redo log buffer2.5 double write2.6 InnoDB后台线程2.6.1 InnoDB主线程2.6.2 InnoDB后台I/O线程2.6.3 InnoDB脏页刷新线程2.6.4 InnoDB

wang_luwei的博客 2571

Mysql优化

摘要: 一、单标优化 二、读写分离 三、缓存 四、表分区 五、垂直拆分 六、水平拆分 参考: 请叫我头头哥 超级全面的MySQL优化指南

小男孩tom的博客 187

mysql 12 MySQL基于成本的优化

01。

qq_38757863的博客 182

MySQL性能优化

MySQL性能优化 (转)

qq_21514303的博客 171
上一篇: 数据库三大范式(重要)
下一篇: SQL数据查询之——嵌套查询
周末去看海
博客等级 码龄9年 50粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值