叩丁狼—Java培训实战教程之mysql优化
Java培训实战教程之mysql优化
Java培训过程中精点、难点知识解析
1. mysql引擎1.1. 引擎类型MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。innoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。
2. 如何选择合适的存储引擎选择标准: 根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择多种存储引擎进行组合.
下面是常用存储引擎的适用环境:
1.MyISAM:默认的 MySQL 插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一
2.InnoDB:用于事务处理应用程序,具有众多特性,包括ACID 事务支持。
3.Memory:将所有数据保存在 RAM 中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
4.Merge:允许 MySQL DBA 或开发人员将一系列等同的MyISAM 表以逻辑方式组合在一起,并作为 1 个对象引用它们。
对于诸如数据仓储等 VLDB 环境十分适合设置高速缓存注:可以通过order by语句测试缓存,order by语句执行速度慢!
设置和查询高速缓存大小SET GLOBAL query_cache_size = 41984; #40KSHOW VARIABLESLIKE query_cache_size +------------------+-------+| Variable_name | Value |+------------------+-------+| query_cache_size | 41984 |+------------------+-------+2.1.3. 缓存开启的方式查看是否开启SHOW VARIABLES LIKE query_cache_type SET SESSION query_cache_type =ON;如果查询缓存大小设置为大于0,query_cache_type变量影响其工作方式。这个变量可以设置为下面的值:0或OFF:将阻止缓存或查询缓存结果。
1或ON:将允许缓存,以SELECTSQL_NO_CACHE开始的查询语句除外。2或DEMAND:仅对以SELECTSQL_CACHE开始的那些查询语句启用缓存。出自Java培训GLOBAL:设置所有链接的客户端session:设置单个客户端2.1.4. 设置缓存结果的最大值最小值如果不设置缓存的上线下线,查询结果过大将不会缓存。查询上线:SHOW VARIABLES LIKE query_cache_limit 设置上下线:SET GLOBAL query_cache_limit=10485760; #10MSET GLOBAL query_cache_min_res_unit=41984;2.1.5. 查询高速缓冲状态和维护可以使用下面的语句检查MySQL服务器是否提供查询缓存功能:SHOW VARIABLES LIKE have_query_cache +------------------+-------+| Variable_name | Value |+------------------+-------+| have_query_cache | YES |+------------------+-------+FLUSH QUERY CACHE:语句来清理查询缓存碎片以提高内存使用性能。
该语句不从缓存中移出任何查询。RESET QUERY CACHE:语句从查询缓存中移出所有查询。FLUSH TABLES语句也执行同样的工作。SHOW STATUS:为了监视查询缓存性能,使用SHOWSTATUS查看缓存状态变量,例如:mysql SHOW STATUS LIKE Qcache% +-------------------------+--------+| Qcache_free_blocks | 36 || Qcache_free_memory | 138488 || Qcache_hits | 79570 || Qcache_inserts | 27087 || Qcache_lowmem_prunes | 3114 || Qcache_not_cached | 22989 || Qcache_queries_in_cache | 415 || Qcache_total_blocks | 912 |+-------------------------+--------+QCACHE_free_blocks:空闲内存块的数量。QCACHE_free_memory:空闲内存的大小。QCACHE_hits:查询缓存被访问的次数(命中数)。
QCACHE_inserts:加入到缓存的查询数量。QCACHE_lowmem_prunes:由于内存较少从缓存删除的查询数量。QCACHE_not_cached:非缓存查询数(不可缓存,或由于query_cache_type设定值未缓存)。Qcache_queries_in_cache:登记到缓存内的查询的数量。Qcache_total_blocks:查询缓存内的总块数。
2.2. 高速缓存语句要求下面的两个查询被查询缓存认为是不相同的:SELECT * FROM tbl_nameSelect * from tbl_name查询必须是完全相同的(逐字节相同)才能够被认为是相同的。
2.3. 不缓存的语句如果一个查询包含下面函数中的任何一个,它不会被缓存:BENCHMARK()CONNECTION_ID()CURDATE()CURRENT_DATE()CURRENT_TIME()CURRENT_TIMESTAMP()CURTIME()DATABASE()带一个参数的ENCRYPT()FOUND_ROWS()GET_LOCK()LAST_INSERT_ID()LOAD_FILE()MASTER_POS_WAIT()NOW()RAND()RELEASE_LOCK()SYSDATE()不带参数的UNIX_TIMESTAMP()USER()Java培训学院始终认为你将会是最优秀的存在,看好你,加油!!!
叩丁狼—Java培训实战教程之mysql优化相关推荐
- java+mysql性能优化_Java培训实战教程之mysql优化
Java培训实战教程之mysql优化 更新时间:2015年12月29日13时30分 来源:传智播客Java培训学院 浏览次数: 1. mysql引擎 1.1. 引擎类型 MySQL常用的存储引擎 ...
- 叩丁狼分享—培训实战教程之浅谈过滤器Filter
一.过滤器的基本概念Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应. 主要用于对HttpServletRequest 进行预处理,也可以对Htt ...
- Java培训实战教程之叩丁狼JavaNIO分享
Java培训实战教程之叩丁狼JavaNIO分享 Java中的I/O流或者输入/输出流是指数据在本地文件或网络中以流的方式进行传输.新的输入/输出(NIO)库是在JDK1.4版本中引入的.NIO弥补了原 ...
- JAVA期末考广东科技学院,我是叩丁狼广州Java老学员,我来说说自己的故事
我后来也推荐了一个朋友过来培训,他是我之前船厂的同事,年纪比我还要大点.他很早就想转行做编程了,也问了身边很多朋友,最后选了叩丁狼.不过不是我主动去游说的,是他各方打听做了对比后做出的选择. 在这里, ...
- 卖任小龙java视频,任小龙Java大神之路(第九季 SpringMVC)视频教程叩丁狼教育出品...
大家好咱们开始上课,在正式上课之前咱们先花点时间来对我们接下来的这个课程,然后做一个大概的一个介绍 之前咱们讲的这个spring帝国,讲了十分的核心,对吧?然后在当初的时候咱们还有一块内容是没有讲到的 ...
- audio h5 src 变了之后_我在叩丁狼学H5
#我在叩丁狼学H5#最近接触到了一些前端框架,像Vue.js,React,发现小程序的框架体系跟它们很像.它们都推崇模块化,组件化,数据与元素绑定.这样没有繁琐的DOM操作,组件之间完全分离,样式和逻 ...
- java for 字母金字塔_扣丁学堂Java培训简述如何用C#随机数生成字母金字塔
本篇文章扣丁学堂Java培训小编给读者们简单分享一下如何用C#随机数生成字母金字塔,具有一定的参考价值,感文中有详细的代码列出供感兴趣的小伙伴参考,想要了解的小伙伴就随小编来看一下具体内容吧. 1.代 ...
- 4. Vue入门实战教程之vue-element-admin后端API适配
Vue入门实战教程之vue-element-admin后端API适配 1.1 前言 1.2 分析框架 1.1.1 第一个接口:根据账号密码登陆获取token 1.1.2 第二个接口:根据token获取 ...
- Docker最全教程之MySQL容器化 (二十四)
Docker最全教程之MySQL容器化 (二十四) 原文:Docker最全教程之MySQL容器化 (二十四) 前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过 ...
最新文章
- Drug Target Review | 利用AI发现和设计药物
- jittor和pytorch生成网络对比之bicyclegan
- xenapp 发布到外网更改公网IP。
- mpvue template compiler 中文版教程
- TDMA 时分多路复用
- java spring入门小程序_springMVC学习笔记(二)-----注解和非注解入门小程序
- 永洪报表工具_2020年最值得推荐的五大BI工具
- pom.xml中依赖的optionaltrue/optional标签
- 在Linux上离线安装SQL Server 2017
- Redis数据结构04-SortedSet
- Java annotation 自定义注释@interface的用法 转载记录
- Java下载及环境配置
- 为什么不使能中断,中断标志位也会被置一
- android 经纬度 谷歌,android:GPS获取location经纬度并用谷歌解析为地理位置名称
- C/C++游戏项目完整教程:《坦克大战》
- sqlserver转mysql_数据库 SQLServer转MySQL数据库
- 个人微信小程序快速赚攻略
- 下载refseq序列
- 【YBT高效进阶】1基础算法/1逆推算法/2奇怪汉诺塔
- 【专题5: 硬件设计】 之 【19.案例二:循环泵,滤波电容放电电路】