一、使用数据

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. 【分布式】Zookeeper使用--开源客户端

    一.前言 上一篇博客已经介绍了如何使用Zookeeper提供的原生态Java API进行操作,本篇博文主要讲解如何通过开源客户端来进行操作. 二.ZkClient ZkClient是在Zookeepe ...

  2. 生成随机id对比

    生成随机id 最近公司的项目游戏生成的随机不重复id,重复概率有点大, 代码如下: private static int id = 0; public static int serverID = 0; ...

  3. scikit-learn一般实例之七:使用多输出评估器进行人脸完成

    本例将展示使用多输出评估期来实现图像完成.目标是根据给出的上半部分人脸预测人脸的下半部分. 第一列展示的是真实的人脸,接下来的列分别展示了随机森林,K近邻,线性回归和岭回归对人脸下半部分的预测. # ...

  4. 2011奥斯卡最佳纪录片《监守自盗(Inside Job)》小结

    影片探讨了2008年金融危机产生的原因. 美国忽略1933年的旧法律,立新法,以放松金融监管. 投资银行被允许更高的杠杆率,33:1,也就是说,投资物跌价3%就会导致破产. 投资银行放贷,但是转手将贷 ...

  5. C#开发微信门户及应用(26)-公众号微信素材管理

    微信公众号最新修改了素材的管理模式,提供了两类素材的管理:临时素材和永久素材的管理,原先的素材管理就是临时素材管理,永久素材可以永久保留在微信服务器上,微信素材可以在上传后,进行图片文件或者图文消息的 ...

  6. C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

    我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...

  7. bzoj3388(神奇的解法)

    题目大意: 约翰的表哥罗恩生活在科罗拉多州.他近来打算教他的奶牛们滑雪,但是奶牛们非常害羞,不敢在游人如织的度假胜地滑雪.没办法,他只好自己建滑雪场了.罗恩的雪场可以划分为W列L行(1≤W≤500;1 ...

  8. Dynamics CRM 之ADFS 使用 WID 和代理的联合服务器场

    为此部署拓扑 Active Directory 联合身份验证服务 (AD FS) 等同于联合服务器场与 Windows 内部数据库 (WID) 拓扑中,但它将代理服务器计算机添加到外围网络,以支持外部 ...

  9. UI-初识君面之理论篇

    一个好的app不光要用好的功能,还要有好的界面,这样内外兼修才算得上是一个好的App.其实跟人一样,不能只刷帅,要有内涵(看清楚哦,内涵不是指闷骚).不知不觉在园子里已经晃了八年,来深也八年了,.NE ...

  10. 安开发卓之Notification(一)代码直接能用

    Notification是Android中很理想的一种显示提示信息的方法,它可以将应用程序的信息传递到我们的Android桌面状态栏,采用这种消息传递方式不会影响到用户对手机的正常使用.而且Notif ...