Mysql完全手册(笔记二,使用数据与性能优化)
一、使用数据
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完全手册(笔记二,使用数据与性能优化)的更多相关文章
- MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)
知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...
- DedeCMS数据负载性能优化方案简单几招让你提速N倍
前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利.今天,分享一下DedeCMS数据负载性能优化的方法. 接触织梦也有三年多时间了,对它可谓 ...
- Android群英传笔记——第十章:Android性能优化
Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...
- 大数据应用之HBase数据插入性能优化实测教程
引言: 大家在使用HBase的过程中,总是面临性能优化的问题,本文从HBase客户端参数设置的角度,研究HBase客户端数据批量插入性能优化的问题.事实胜于雄辩,数据比理论更有说服力,基于此,作者设计 ...
- mongodb可以通过profile来监控数据 (mongodb性能优化)
mongodb可以通过profile来监控数据 (mongodb性能优化) 开启 Profiling 功能 ,对慢查询进行优化: mongodb可以通过profile来监控数据,进行优化. 查看 ...
- mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- MySQL高级学习笔记(四):索引优化分析
文章目录 性能下降 SQL慢 执行时间长 等待时间长 查询语句写的烂 查询数据过多 关联了太多的表,太多join 没有利用到索引 单值 复合 服务器调优及各个参数设置(缓冲.线程数等)(不重要DBA的 ...
- 高性能MySQL笔记 第6章 查询性能优化
6.1 为什么查询速度会慢 查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...
- MySQL(十四)管理维护及性能优化
关于MySQL的学习,<MySQL必知必会>这本书呢,看完已经两个月了,一直被工作以及生活的一些琐事拖着,趁着今晚有空闲,就整理完了最后的几章学习笔记,接下来的学习计划呢, 应该是pyth ...
随机推荐
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- Oracle数据库异机升级
环境: A机:RHEL5.5 + Oracle 10.2.0.4 B机:RHEL5.5 需求: A机10.2.0.4数据库,在B机升级到11.2.0.4,应用最新PSU补丁程序. 目录: 一. 确认是 ...
- Vertica节点宕机处理一例
Vertica节点宕机处理一例: 查询数据库版本和各节点状态 常规方式启动宕机节点失败 进一步查看宕机节点的详细日志 定位问题并解决 1. 查询数据库版本和各节点状态 dbadmin=> sel ...
- 分布式系统理论进阶 - Paxos
引言 <分布式系统理论基础 - 一致性.2PC和3PC>一文介绍了一致性.达成一致性需要面临的各种问题以及2PC.3PC模型,Paxos协议在节点宕机恢复.消息无序或丢失.网络分化的场景下 ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
- [JSP]JSP 简介
1.1 概述 1.1.1 什么是 JSP? JSP 全称是 Java Server Pages,是一种动态网页开发技术. 它与 PHP.ASP.ASP.NET 等语言类似,运行在服务端的语言. JSP ...
- IOS学习之-私人通讯录
通过一段时间IOS的学习完成了一个简单的应用,"私人通讯录". 运行效果如下图: 1.登录页 2.通讯录列表 3.添加 4.编辑 5.删除 6.注销 总视图结构如下图: 总结本程序 ...
- 怎么调试lua性能
怎么调试lua性能 我们的游戏使用的是Cocos2dx-lua 3.9的项目,最近发现我们的游戏.运行比较缓慢.想做一次性能优化了.其实主要分为GPU.CPU的分别优化.GPU部分的优化.网上有很多优 ...
- ef
现阶段使用回溯 entityframework作为.net平台自己的一个orm的框架,之前在项目中也有使用,主要采用了table和model first的方式,此两种感觉使用上也是大同小异.在项目中经 ...
- hibernate 中根据id删除一条记录的语句
qid name like content 1 A 1 the first text 2 B 2 the Second text 1 C 3 the Third text 如上表所示,当我们需要某个q ...