一、使用数据

1、使用变量

MySQL也可以让我们以用户自定义的变量来存储select查询的结果,以便在将来select查询中使用。它们只会在客户会话期间存在,但是它们提供一个方便有效的方法来连接查询,然后再另一个查询的子句中使用一个查询的输出。

变量赋值由:=操作符完成,它用来向一个变量分配一个值。下面的例子是把表中的最早日期赋给@oldest变量:

select @oldest:=MIN(accountsfds) from account;

存储在@oldest变量中的值可以通过简单的select进行检索:

select @oldest;

变量名是大小写敏感的

2、控制select行为

可以向select语句添加很多关键字来修改行为:

(1)distinct关键字删除包含结果集中具有重复值的记录

(2)sql_calc_found_rows关键字告诉mysql计算符合查询的总行数。通过调用found_rows()函数可以得到总行数

(3)sql_cache和sql_no_cache关键字告诉mysql查询结果是否需要高速缓存

(4)sql_buffer_result关键字强制MySQL把查询结果存储到一个临时表。这使缓冲器消除了对查询所使用的表的锁定,而且结果被传送给客户,因而可以暂时被其他过程使用

(5)sql_big_result和sql_small_result关键字可以指定结果集的期望大小,因此可帮助找到最佳的方法对返回的记录进行排序和存储(基于磁盘或者内存中的临时表)。

(6)sql_high_priority关键字提升了与update,insert和delete语句相竞争的查询的优先级,因而可以在繁忙的数据库服务器上快速地执行查询。

3、导入数据

insert语句不是向表中插入数据的唯一方法,mysql还允许使用load data infile 命令一次性插入多条记录。

表列为:name和dob

该文件位于服务器的/home/me/目录中,它的内容使用逗号隔开的:

alan p,1928-03-14

john d,1938-08-23

emai y,2000-08-12

现在,这些逗号隔开的数据可以用下面的命令导入birthdays表:

load data infile '/home/me/data.txt' into table birthdays fields terminated by ',' lines terminated by '\r\n' (name,dob)

4、导出记录

可以使用select …into outfile 结构从一个表导出记录到一个文件

select name,dob from accouts where accountBal>5000 into outfile 'accounts.txt' fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

5、插入或替换数据

replace into
replace into table (id,name) values('1','aa'),('2','bb')
此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在
就相当于
insert into table (id,name) values('1','aa'),('2','bb')
如果存在相同的值则不会插入数据

二、性能优化

1、添加索引

2、设置缓存,添加关键字sql_cache

3、减少使用子查询

4、建临时表,临时表是存在于内存中,操作快

5、优化表设计,使用定长字段,能合并则合并

6、调整服务器设置

(1)key_buffer_size变量控制了索引缓冲可以使用的内存的数量。这个值越高,索引可以使用的内存越多,性能越好。一般情况下,可以保持这个值在服务器可以使用内存总量的25%到30%。

(2)table_cache变量控制表告诉缓冲可以使用内存的数量,以及在同一时间内MySQL可以处理表的打开总量。对于有很多数据库和表的非常忙的服务器应该增加这个值,以便MySQL能可靠的支持所有的请求。与此有关的变量还有max_connections变量,MySQL手册建议使用公式table_cache=max_connections * N设置table_cache,其中N为标准连接中表的数量。

(3)可以提高使用order by或group by语句查询的速度,通过增加mysql分类缓冲值得方法分类结果设置,通过sort_buffer变量进行控制。还可以考虑增加read_rnd_buffer_size变量的值,以提高读分类行的速度

(4)增加read_buffer_size变量值可以提高select查询的速度,该变量值增加扩大了mysql读缓冲的规模,从而使select能顺序地扫描表

(5)在执行一项作业时,mysql保存告诉缓存中组成作业的语句,直到收到指示写信息到二进制日志为止,然后将这些信息提交到数据库。对于比较长或者复杂的作业,应该通过binlog_cache_size变量增加高速缓存的规模,以便得到更好的性能。

(6)如果准备采用所谓的“批量插入”,则可以通过增加bulk_insert_buffer_size变量的值来提高速度。注:这只能在MyISAM表类型中使用

(7)如果预计在服务器上会增加许多新的连接,增加thread_cache_size变量值的做法很好。当正在工作的客服机断线时,这个变量控制着服务器线程经过的高速缓存的大小。然后这个高速缓存的线程将重新用来服务一个新连接。这个值越高,可以被高速缓存的线程越多,对新连接申请的响应时间越合适

7、基准技术

其主要功能是为数据库服务器查找弱点,确认对sql标准的符合情况、测量性能等。

为了能运行mysql基准技术套件,必须在系统中安装Perl,包括PerlDBI套件和MySQL数据库驱动程序。

Mysql完全手册(笔记二,使用数据与性能优化)的更多相关文章

  1. MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)

    知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...

  2. DedeCMS数据负载性能优化方案简单几招让你提速N倍

    前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利.今天,分享一下DedeCMS数据负载性能优化的方法. 接触织梦也有三年多时间了,对它可谓 ...

  3. Android群英传笔记——第十章:Android性能优化

    Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...

  4. 大数据应用之HBase数据插入性能优化实测教程

    引言: 大家在使用HBase的过程中,总是面临性能优化的问题,本文从HBase客户端参数设置的角度,研究HBase客户端数据批量插入性能优化的问题.事实胜于雄辩,数据比理论更有说服力,基于此,作者设计 ...

  5. mongodb可以通过profile来监控数据 (mongodb性能优化)

    mongodb可以通过profile来监控数据 (mongodb性能优化)   开启 Profiling  功能 ,对慢查询进行优化: mongodb可以通过profile来监控数据,进行优化. 查看 ...

  6. mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用

    版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...

  7. MySQL高级学习笔记(四):索引优化分析

    文章目录 性能下降 SQL慢 执行时间长 等待时间长 查询语句写的烂 查询数据过多 关联了太多的表,太多join 没有利用到索引 单值 复合 服务器调优及各个参数设置(缓冲.线程数等)(不重要DBA的 ...

  8. 高性能MySQL笔记 第6章 查询性能优化

    6.1 为什么查询速度会慢   查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...

  9. MySQL(十四)管理维护及性能优化

    关于MySQL的学习,<MySQL必知必会>这本书呢,看完已经两个月了,一直被工作以及生活的一些琐事拖着,趁着今晚有空闲,就整理完了最后的几章学习笔记,接下来的学习计划呢, 应该是pyth ...

随机推荐

  1. 网站文件系统发展&&分布式文件系统fastDFS

    网站文件系统发展 1.单机时代的图片服务器架构 初创时期由于时间紧迫,开发人员水平也很有限等原因.所以通常就直接在website文件所在的目录下,建立1个upload子目录,用于保存用户上传的图片文件 ...

  2. 4.C#WinForm基础图片(显示和隐藏)

    要求: 软件上有一张图片,默认是隐藏的.用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁,则显示图片. 知识点: 取当前年份,Date Time Now ...

  3. 5.C#WinForm基础登陆失败三次退出系统

    目标: 登陆界面,登陆错误三次退出程序.假设用户名密码是admin.888888,不区分大小写,(易错点:局部变量与类变量) 局部变量每次运行完毕变量的值都会被销毁,下次再运行,会重新初始化.     ...

  4. Win10 连接L2TP VPN 失败解决方法

    Win10 连接L2TP VPN 失败解决方法 iOS系统不知道在什么时候,已经不支持PPTP VPN.偶尔的机会刚好看到github上的一键式VPN服务器部署脚本setup-ipsec-vpn,就在 ...

  5. [占位-未完成]scikit-learn一般实例之十二:用于RBF核的显式特征映射逼近

    It shows how to use RBFSampler and Nystroem to approximate the feature map of an RBF kernel for clas ...

  6. 「译」JUnit 5 系列:架构体系

    原文地址:http://blog.codefx.org/design/architecture/junit-5-architecture/ 原文日期:29, Mar, 2016 译文首发:Linesh ...

  7. 信贷业务(Ali)

    1.信贷业务视角 信贷业务主要有两个视角,借款人和出资机构.借款人关心借多少钱,还多少钱,多少利息:机构关心信贷资产风险,收益. 领域模型上两个视角分开:个人--->账单.机构--->资产 ...

  8. java代码解压zip文件

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  9. 面向对象设计模式纵横谈:Singelton单件模式(笔记记录)

       李建忠老师讲的<面向对象设计模式纵横谈>,早就看过了,现在有了时间重新整理一下,以前的博客[赛迪网]没有了,现在搬到博客园,重新过一遍,也便于以后浏览. 设计模式从不同的角度分类会得 ...

  10. Idea SpringMVC+Spring+MyBatis+Maven调整【转】

    Idea SpringMVC+Spring+MyBatis+Maven整合   创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...