高性能MySQL第1章知识点梳理】的更多相关文章

1. MySQL的逻辑架构 最上面不是MySQL特有的,所有基于网络的C/S的网络应用程序都应该包括连接处理.认证.安全管理等. 中间层是MySQL的核心,包括查询解析.分析.优化和缓存等.同时它还提供跨存储引擎的功能,包括存储过程.触发器和视图等. 最下面是存储引擎,它负责存取数据.服务器通过storage engine API可以和各种存储引擎进行交互. 2. 并发控制 MySQL提供两个级别的并发控制:服务器级和存储引擎级.加锁是实现并发控制的基本方法,MySQL中锁的粒度: (1) 表级…
高性能索引 1.索引基础:索引的作用类似'目录'帮助Query来快速定位数据行. 1.1索引类型: 1.1.1 b-tree索引 b-tree(balance tree)索引:使用平衡树(非平衡二叉树)来保存索引值,叶子结点的到根节点的距离相差不超过1:对于不同的引擎,不同的索引类型叶子结点保存的值可以不同,同过索引找到数据行的方式也不同 可以使用b-tree索引的查询类型:1.全值索引:2.最左前缀:3.前缀索引:4.匹配范围:5.精准匹配某一列,范围匹配另一列(可以在看作最左前缀的扩大化)6…
查询缓存: 在解析一个sql之前,如果查询缓存是打开的,mysql会去检查这个查询(根据sql的hash作为key)是否存在缓存中,如果命中的话,那么这个sql将会在解析,生成执行计划之前返回结果. ps:在5.1版本之前,使用=?参数这种不能使用查询缓存. 查询优化器: oracle使用基于cost的优化器. 可以使用last_query_cost来获取当前回话的上一个查询的cost: /*使用SQL_NO_CACHE禁用查询缓存*/ select SQL_NO_CACHE count(*)…
6  查询性能优化 6.1为什么查询会变慢 这里说明了的查询执行周期,从客户端到服务器端,服务器端解析,优化器生成执行计划,执行(可以细分,大体过程可以通过show profile查看),从服务器端返回客户端结果. 而执行部分作为最重要的一环,需要做的事情比较多,而不合适的query往往让执行过程做了不必要的操作,或者不能使用更优秀的底层数据结构,从而用时更久. 6.2慢查询基础:优化数据访问 访问数据量多大,超过实际所需是慢查询的一个原因.导致这种情况的原因大致有两个 1.应用程序向mysql…
第6章,优化配置 https://www.cnblogs.com/musings/p/5913157.html 1:服务器读取的配置文件,可以使用下面的命令查询 admin@iZwz92c0zpe8t65qe996ckZ:~$ which mysqld /usr/sbin/mysqld 使用mysqld查询配置 root@iZwz92c0zpe8t65qe996ckZ:/home/admin# /usr/sbin/mysqld --verbose --help | grep -A 1 'Defa…
b-tree索引 一定程度上说,mysql只有b-tree索引.他没有bitmap索引.还有一个叫hash索引的,只在Memory存储引擎中才有. b-tree索引跟oracle中的大同小异. mysql中关于b-tree的限制: 只有做全值拼配或者根据左前缀匹配.我猜测是因为mysql没有基于cost的优化器,它没有对index full scan的操作.因为无法衡量这种full scan是否划得来.所以只能对前缀进行匹配,没有后缀或者中间匹配这种逻辑. 多列索引 如果是多列索引,顺序很重要,…
1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎——Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类). 4.TokuDB——TokuDB 其实本身数据存储用到了B-TREE的变形版本Fractal-Tree. 5.查看MySQL版本SELECT…
2017-07-25 14:15:43 前言:MYSQL从5.0和5.1版本开始引入了很多高级特性,例如分区.触发器等,这对有其他关系型数据库使用 背景的用户来说可能并不陌生.这些新特性吸引了很多用户开始使用MYSQL.不过,这些特性的性能到底如何, 还需要用户真正使用过才能知道. 1.1分区表 对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组 底层表的句柄对象(Handler Object)的封装. 对分区表的请求,都会通过句柄对象转化成对存储引擎…
1.1  mysql逻辑结构 第一层: 负责连接处理,授权认证,安全等事情 第二层:负责mysql的大部分核心功能 ,查询解析,分析,优化,缓存和所有的内置函数,所有跨存储引擎的功能都在这一层实现,,存储过程,视图,触发器等 第三层:存储引擎,负责mysql中数据的提取和存储: 1.2 并发控制—— 共享锁:也叫读锁,读锁是共享的,多个连接可以同时获取数据并互不干扰! 排他锁:也叫写锁,排他性,阻塞其他的写锁和读锁:在同一时间内,只能有一个用户执行写入操作,并且防止其他用户进行读取正在写入的同一…
可扩展性的定义:当增加资源以获得执行更多的工作系统能获得划算的同等提升. 向上扩展(垂直扩展):提升服务器的硬件性能. 向外扩展(水平扩展):一般都是复制,拆分,数据分片(sharding). 复制:如主从复制分担读的压力. 拆分:如按照功能拆分,将不同的表放在不同的库上. 数据分片(sharding):把数据分成一小片,然后存放在不同的库上. 目前,为了实现水平扩展,数据分片是最常用最成功的方式. 作者说:能不做分片就不要做分片.除非到了不能解决的性能瓶颈.可以先考虑提升服务器性能,复制,或者…