![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高性能MYSQL学习笔记
IT-MANS
一个不安分的java工程师,java是世界上最好的语言!
展开
-
高性能MYSQL(学习笔记)-查询性能优化篇2
重构查询方式一个复杂的查询还是多个简单的查询在传统实现中,总是强调需要数据库层完成尽可能多的工作,这样做的逻辑在于以前总是认为网络通信、查询解析和优化是一件代价很高的事情。但是这样想法对于MySQL并不适用,MySQL从设计上让链接和断开都很轻量级,返回一个小查询结果反面很高效。现代网络比以前快很多,无论是贷款还是延迟,在一些版本上,每秒千兆网络也能轻松满足美妙2000次的查询。切分查询有时候对一...翻译 2018-05-02 15:59:06 · 270 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-MySQL高级特性4
查询缓存很多数据库产品都能够缓存查询的执行计划,对于相同类型的SQL就可以跳过SQL解析和执行计划生成阶段,MySQL在某些场景下也可以实现,但是MySQL还有另外一种不同的缓存类型:缓存完整的SELECT查询结果,也就是“查询缓存”。1. MySQL查询缓存保存查询返回的完整结果,当查询命中该缓存,MySQL会立即返回结果,跳过了解析、优化、执行阶段。2. 查询缓存系统会...翻译 2018-05-15 17:15:54 · 312 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-MySQL高级特性3
插件MySQL支持各种各样的插件,以下是简单的插件列表:存储过程插件:可以帮你在存储过程运行后再处理一此运行结果后台插件:可以让你的程序在MySQL中运行,可以实现自己的网络监听、执行自己的定时任务,它监听一个新的网络端口,使用一个简单的协议可以帮你无须使用SQL接口直接访问InnoDB数据,使得MySQL能够像nosql一样具有非常高的性能全文解析插件:提供一种文本的功能,可以根据自己的需求来对...翻译 2018-05-15 17:14:24 · 157 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-查询性能优化篇1
查询性能优化为什么查询会慢查询是一个任务,它由一系列的子任务组成,每个子任务都会消耗一定的时间。如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,缩短响应时间。其中的任务有:客户端-服务器-生成执行计划-执行-返回,其中最主要的是执行,包括了大量为了检索数据到存储引擎的调用以及调用后的数据处理,包括排序、分组等。在完成这些任务的时候,查询需要花费的时间,包括网...翻译 2018-04-29 23:32:10 · 243 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-索引篇4
索引案例学习理解索引的最好办法是结合示例,这里准备了一个索引的案例。假设要设计一个在线约会网站,用户信息表有很多列,包括国家、地区、城市、性别、眼睛颜色等等。网站必须支持上面的这些特征的各种组合来搜索用户,还必须允许根据用户的最后在线时间、其他会员对用户的评分等对用户进行排序对结果进行限制。支持多种过滤条件Countr列的选择性不高,但是可能很多查询都会用到,sex列的选择性很低,但是很多查询也会...翻译 2018-04-29 23:20:26 · 865 阅读 · 0 评论 -
高性能MYSQL(学习笔记)—索引篇3
聚族索引聚族索引不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但INNODB的聚族索引实际上在同一个结构中保存了B-Tree索引和数据行。聚族的意思是数据行和相邻的键值紧凑地存储在一起。聚族索引的存储方式如下,叶子页包含了行的全部数据,但是节点页只包含了索引列,索引列在这里包含的是整数值。InnoDB将通过主键聚集数据,这也就是说图被索引的列就是主键列。如果没有主键列,...翻译 2018-04-28 00:43:04 · 686 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-索引篇2
高性能的索引策略高效的选择和使用索引有很多种方式,其中有些是针对特殊案例的优化,有些则是针对行为的优化,接下来介绍如何高效的使用索引。独立的列我们通常会看到一些查询不当的索引,如果查询的列不是独立的,则MYSQL就不会使用索引。独立的列指的是所以不能是表达式的一部分,也不能是函数的参数例如:wher actor_id+1=5 to_days(current_date)-to_days(date_...翻译 2018-04-27 00:06:19 · 631 阅读 · 1 评论 -
高性能MYSQL(学习笔记)-索引篇1
创建高性能的索引索引概念 索引(在MYSQL中也叫做“键(key)”)是存储引擎中用户快速找到记录的一种数据结构,这是索引的基本功能(可以对比书本的目录,就是索引),索引应该是对查询性能优化最有效的手段。在MYSQL中,存储引擎先在索引中找到对应的值,然后根据匹配的索引记录找到对应的数据行例如: selectfirst_name from sakila.actor where actor...翻译 2018-04-26 23:51:13 · 218 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-Schema与数据类型优化1
Schema与数据类型优化选择优化的数据类型选择正确的数据类型对于获得高性能至关重要,下面几个原则可以帮助你做出更好的选择。更小的通常更好一般情况下尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为他们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。简单就好简单数据类型的操作通常需要更少的CPU周期。整型比字符串操作代价更低,因为字符集和校对规则使字符比较比整...翻译 2018-05-04 20:55:29 · 240 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-MySQL高级特性2
视图概念和特点:1、 视图是一张虚拟表,本身不存放任何数据2、 视图返回数据是从MySQL其他表生成3、 重用SQL语句、简化复杂的SQL操作,可以方便重用而隐藏底层查询细节4、 使用表的部分列而不是整张表权限5、 保护数据,提供某些权限给用户而不是整张表权限限制视图必须唯一命名(名称不能和表相同)、数量不限、创建视图需要授权、可以嵌套、视图不能索引,不能有关联的触发器或默认值、可以和表...翻译 2018-05-11 09:05:35 · 368 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-MySQL高级特性1
MySQL高级特性分区表分区表是一个独立的逻辑表,但是底层由多个物理字表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装,对于分区表的请求,都会通过句柄对象转化成存储引擎的接口调用。所以分区对于SQL层来说是一个完全封装底层实现的黑盒子,对应用是透明的,但是从底层来看每个分区表都有一个使用#分隔命名的表文件。MySQL实现分区表的方式——对底层表的封装——意味着索引也是按照分区的字表定义,...翻译 2018-05-10 00:02:59 · 448 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-查询性能优化篇3
MySQL查询优化器的局限性关联子查询MySQL的关联子查询比较糟糕,特别是像where in()这样的写法,例如select * from sakila.filmwhere film_id in(select film_id from sakila.film_actor where actor_id = 1);Mysql不会先执行子查询,然后执行in操作,mysql会将上面语句改写成:Selec...翻译 2018-05-02 16:00:04 · 229 阅读 · 0 评论 -
高性能MYSQL(学习笔记)-MySQL高级特性5
总结 分区表 分区表是一个粗粒度、简易的索引策略,适用于大数据量的过滤场景。最适合的场景是,在没有合适的索引时,对其中几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分区和索引能够都在内存中,限制单表分区不要超过150个,并且注意某些导致无法做分区过滤的细节,分区表对单条记录查询没有什么优势,注意这类查询的性能。视图对好几个表的复杂查询,使用视图有时候会大大简化问题,当视图使...翻译 2018-05-15 17:16:47 · 257 阅读 · 0 评论