MyISAM

mysql explain 用法详解

梦想的初衷 提交于 2020-08-13 04:08:43
Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。 下面是使用 explain 的例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL( 如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中 )。 mysql> explain select * from actor; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | actor | ALL |

MyISAM存储引擎

╄→гoц情女王★ 提交于 2020-08-13 03:30:18
MySQL引擎之MyISAM MyISAM引擎 作为 MYSQL5.5 版本之前的默认存储引擎 MyISAM 管理非事务表、是 ISAM 的扩展格式,成功创建表后将会生成 MYD (数据文件)和 MYI (索引文件)两个文件 除了提供 ISAM 里所没有的索引的字段管理等的大量功能、 MyISAM 还使用一种表格锁定的机制、来优化多个并发的读写操作。 MyISAM 提供高速存储和检索、以及全文搜索能力 什么是锁 锁主要作用是管理共享资源的并发访问 锁用于实现事务的隔离性 锁的类型 共享锁(也称读锁):针对同一份数据,多个读操作可以同时进行而且不会相互影响 独占锁(也称写锁):当前写操作没有完成之前,会阻断所有要进行读写的操作 锁的粒度 表级锁 行级锁 MyISAM存储引擎特性 不支持事务、不具备AICD特性(原子性、一致性、分离性、永久性) 表级别锁定形式(更新数据时锁定整个表、这样虽然可以让锁定的实现成本很小但是同时大大降低了其并发的性能) 读写相互阻塞(不仅会在写入的时候阻塞读取、还会在读取的时候阻塞写入、但是读取不会阻塞读取) 只会缓存索引( myisam 通过 key_buffer_size 来设置缓存索引,提高访问性能较少磁盘IO的压力、但是只缓存索引、不缓存数据) 读取速度快、占用资源比较少 不支持外键约束、只支持全文检索 表损坏修复 MyISAM表支持数据压缩

MySQL的存储引擎InnoDB选择了B+ 树

我的梦境 提交于 2020-08-13 03:00:05
我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引的实现方式。 1. 索引简介    索引是一种用于快速查询行的数据结构 ,就像一本书的目录就是一个索引,如果想在一本书中找到某个主题,一般会先找到对应页码。MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质: 索引是数据结构 。 2. 索引的几种数据结构类型 2.1 哈希索引(hash index) 哈希索引(hash index)基于哈希表(也可以叫散列表)实现 ,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。 ​ 下面举个小例子 ​ 它能快速的检索数据,不过在mysql数据库却有局限: a): 哈希索引数据并不是按照索引值顺序存储的,所以无法用来进行排序; b): 不能进行多列字段查询数据; c): 更不支持范围查询,比如查询年龄大于30,。 d): 有大量重复键值的情况下,哈希索引的效率也是极低的

老大让我整理下公司内部mysql使用规范,分享给大家

放肆的年华 提交于 2020-08-12 08:32:38
最近涉及数据库相关操作较多,公司现有规范也不是太全面,就根据网上各路大神的相关规范,整理了一些自用的规范用法,万望指正。 数据库环境 dev: 开发环境 开发可读写,可修改表结构。开发人员可以修改表结构,可以随意修改其中的数据但是需要保证不影响其他开发同事。 test: 测试环境 开发可读写,开发人员可以通过工具修改表结构。 online: 线上环境 开发人员不允许直接在线上环境进行数据库操作,如果需要操作必须找DBA进行操作并进行相应记录,禁止进行压力测试。 重点的问题,各个环境的mysql服务器对应的用户权限,一定要做到权限划分明确,有辨识度,能具体区分业务场景等。 命名规范 基本命名规则 使用有意义的英文词汇,词汇中间以下划线分隔。(不要用拼音) 只能使用英文字母,数字,下划线,并以英文字母开头。 库、表、字段全部采用小写,不要使用驼峰式命名。 避免用ORACLE、MySQL的保留字,如desc,关键字如index。 命名禁止超过32个字符,须见名之意,建议使用名词不是动词 数据库,数据表一律使用前缀 临时库、表名必须以tmp为前缀,并以日期为后缀 备份库、表必须以bak为前缀,并以日期为后缀 为什么库、表、字段全部采用小写? 在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。 Windows下是不区分大小写的。

MySQL 数据库优化

不羁岁月 提交于 2020-08-12 07:41:15
不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化。 1、查询连接MySQL服务器的次数 mysql> show status like 'connections'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Connections | 3 | +---------------+-------+ 1 row in set (0.01 sec) 2、查询MySQL服务器的运行时间 mysql> show status like 'uptime'; #单位为秒 +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 158 | +---------------+-------+ 1 row in set (0.00 sec) 3、查询操作的次数 mysql> show status like 'com_select'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com

第十五周

拥有回忆 提交于 2020-08-12 02:51:29
1、 导入hellodb.sql生成数据库 (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 select name,age from students where age > 25 and gender='M'; 结果如下: (2) 以ClassID为分组依据,显示每组的平均年龄 select classid,avg(age) from students where classid is not null group by classid; 结果如下: (3) 显示第2题中平均年龄大于30的分组及平均年龄 select classid,avg(age) from students where classid is not null group by classid having avg(age)>30; 结果如下: (4) 显示以L开头的名字的同学的信息 select * from students where name like 'L%'; 结果如下: 2、数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql grant all on *.* to magedu@'192.168.1.%' identified by 'magedu'; 3、总结mysql常见的存储引擎以及特点。 (1) 、MyISAM引擎特点: 1

CentOS7.2最小安装的虚拟机上安装MySQL 5.6.32

老子叫甜甜 提交于 2020-08-11 18:37:53
首先配置NTP ,同步时间,以免时间出错。 yum -y install ntp vi /etc/ntp.conf 增加3个时间服务器 server s2d.time.edu.cn iburst #西南地区网络中心 server s2e.time.edu.cn iburst #西北地区网络中心 server s2f.time.edu.cn iburst #东北地区网络中心 启动ntp服务 systemctl start ntpd systemctl enable ntpd 查看状态 ntpq -p 1、MySQL 5.6.32 64位安装包下载 在官网 http://dev.mysql.com/downloads/mysql/5.6.html# 中使用迅雷下载MySQL 5.6.32 64位安装包下载(或者wget 下载: # cd /usr/local/src # wget http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.32-1.linux_glibc2.5.x86_64.rpm-bundle.tar ) ( http://cdn.mysql.com/Downloads/MySQL-5.6/MySQL-5.6.32-1.linux_glibc2.5.x86_64.rpm-bundle.tar )

MySQL索引类型

☆樱花仙子☆ 提交于 2020-08-11 18:12:33
MySQL索引 的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。 创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 建立索引会占用磁盘空间的索引文件。 每种搜索引擎支持的索引是不同的,具体如下: MyISAM ,InnoDB支持btree索引 Memory 支持 btree和hash索引 索引的优势如下: * 加快查询速度 * 创建唯一索引来保证数据表中数据的唯一性 * 实现数据的完整性,加速表和表之间的连接 * 减少分组和排序的时间 增加索引也有很多不利,主要表现在以下几个方面: * 创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。 * 索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。 * 当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。 一、索引的分类 1、唯一索引和普通索引 普通索引 :是MySQL中的基本索引类型

御丽诗妃谈MySQL索引怎么用

可紊 提交于 2020-08-11 13:25:55
MySQL索引怎么用?究竟能有多快?看完这篇你就懂了 追逐仰望星空 2020-08-05 10:43:38 推荐学习 阿里P8MySQL,基础/索引/锁/日志/调优都不误,一锅深扒端给你 “吃”完这本Java性能调优实战,MySQL+JVM+Tomcat等问题一键全消 为了能让索引能有更直观的效率,我在一张表里扔进了 百万条 数据(光靠这些数据,生成数据代码写了一个小时,解决MySQL8的文件导入权限问题解决了两个小时,导入数据花费了一个小时,我太难了~(;д;)。但是,一切不以 实践数据 为标准的理论都是**耍!流!氓!**o(´^`)o)。让我们一边讲解MySQL的使用一边看一下索引能为我们的查询带来的性能提升吧。 索引使用的优势 提高查询效率,简单来说就是查的 快 ! 再快 ! 更快 !外面说的什么提高表的速度、加速表连接、减少分组及排序时间、提高系统性能,说白了都是快,查得快!(顺便我发现百度出来的索引使用优势劣势貌似就那么一两套,真就天下文章一大抄呗,抄我的也欢迎,烦请注明出处或者作者Solid_lele哈) 具体会有多快呢? 这是没有索引的百万级数据查找(这个算快的了,慢的四十秒,时间不是很稳定,因为是从磁盘块中读取数据,原理参照我开头提到的那篇文章)10.797s: 这是有索引的百万级数据查找0.272s: 差了四十多倍,就相当于别人一年赚四十多万,我一年赚一万

我,【MySQL】高级篇,一个让你的数据管家单车变摩托的 “关系型数据库”

▼魔方 西西 提交于 2020-08-11 01:19:24
相关数据库sql文件 链接:https://pan.baidu.com/s/1RynVEnBL2nak5aJf0rXYmA 提取码:11gz 文章目录 一、视图 视图介绍 视图的创建 视图的修改 视图的查看与删除 视图的更新(还会更新原始表数据) 视图与表的对比 二、存储过程和函数 变量 存储过程和函数(类似java中的方法) 存储过程 函数 三、流程控制结构 顺序结构(程序从上往下依次执行) 分支结构(程序从两条或多条路径中选择一条去执行) if函数 case结构 if结构 循环结构(程序在满足一定条件的基础上,重复执行一段代码) 循环控制 分类 while loop(可以用来模拟简单的死循环) repeat 四、MySQL架构介绍 MySQL存储引擎 MyISAM和InnoDB 五、索引优化查询★ 性能下降SQL查询慢 原因 常见的通用join查询 SQL执行顺序 Join图 索引简介 是什么 优势 劣势 mysql索引分类 mysql索引结构 哪些情况需要创建索引 哪些情况不需要创建索引 性能分析 MySQLQuery Optimizer MySQL常见瓶颈 Explain 索引优化 索引分析 索引失效(应该避免) 建表SQL 案例(索引失效) 一般性建议 六、查询截取分析 查询优化 永远小表驱动大表(类似嵌套循环NestedLoop) order by 关键字优化