MyISAM

MySQl的一些基本知识(1)

久未见 提交于 2020-04-25 09:56:04
数据库优化操作: MySQL优化 数据库优化维度有四个: 硬件、系统配置、数据库表结构、SQL及索引 优化成本: 硬件>系统配置>数据库表结构>SQL及索引 优化效果: 硬件<系统配置<数据库表结构<SQL及索引 运行机制原理和底层架构 MySQL的查询优化,大家都了解一些最简单的技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要 1.MySQL逻辑架构 在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器 最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理 中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等 第三层包括了存储引擎。通常叫做StorEngine Layer ,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。它们负责存储和获取所有存储在MySQL中的数据。就像Linux众多的文件系统 一样。每个存储引擎都有自己的优点和缺陷 2. MySQL逻辑模块组成 从上图看起来 MySQL 架构非常的简单

2、MySQL常见数据库引擎及比较?

回眸只為那壹抹淺笑 提交于 2020-04-25 08:04:12
MySQL 存储引擎 简介 MySQL 支持数个存储引擎作为对不同表的类型的处理器 。MySQL存储引擎包括处理 事务安全表的引擎 和处理 非事务安全表的引擎 : MyISAM管理非事务表 。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。 MEMORY 存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。 注:MEMORY存储引擎正式地被确定为HEAP引擎。 InnoDB和BDB 存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。 EXAMPLE 存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是 服务 ,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。 NDB Cluster 是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎

MySQL存储引擎InnoDB与MyISAM的区别

一曲冷凌霜 提交于 2020-04-25 05:15:09
一、比较 事务:InnoDB是事务型的,可以使用Commit和Rollback语句。 并发:MyISAM只支持表级锁,InnoDB还支持行级锁。 外键:InnoDB支持外键。 备份:InnoDB支持在线热备份。 崩溃恢复:MyISAM崩溃后发生损坏的概率比InnoDB高,而且恢复速度慢。 其它:MyISAM支持压缩表和空间数据索引。 二、InnoDB   1.它是MySQL默认的事务型存储引擎,只有在需要它不支持的特性时,才考虑使用其他存储引擎。   2.实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(Next-Key Locking)防止幻影读。   3.主索引是聚簇索引,在索引中保存了数据,从而避免直接读取磁盘,因此对查询性能有很大的提升。   4.内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够加快读操作并且自动创建的自适应哈希索引、能够加速插入操作的插入缓冲区等。   5.支持真正的在线热备份。其它存储引擎不支持在线热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。 三、MyISAM   1.设计简单,数据以紧密格式存储。对于只读数据,或者表比较小、可以容忍修复操作,则依然可以使用它。   2.提供了大量的特性

谈谈MySQL的索引

时光毁灭记忆、已成空白 提交于 2020-04-24 13:34:19
目录 索引 前言 是什么 B树 B+树 B树和B+树结构上异同 有什么用 怎么用 索引 前言 总所周知,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快。而支撑这一快速的背后就是索引; MySQL 索引问题也是大家经常遇到的面试题模块,想想自己也没有去系统地总结过索引,所以记录这篇文章来讲下索引。下面还是按照 是什么 -> 有什么用 -> 怎么用 ->来写 是什么 往往大家第一时间提到索引,可能就会说到它是一种数据结构,来提高查询效率的数据结构,用在常用来查询的字段上。但是原理是什么呢?为什么它就可以加快查询? 首先,现如今,数据库系统大多的索引底层结构是B树或者B+树,在数据结构的学习中,大家可能都有了解过,我们先简单介绍下这两种结构。 B树 特点:每个结点都有数据,同时还有指向其下子树的指针域,单个结构和链表的基本单元相似。 每个结点一个数据,等于就命中,小于该数据走左边,大于走右边 B+树 是B树的变形,多路搜索树,是一种稠密索引 特点:真实的数据存储在叶子结点的链表中,其他非叶子结点并没有数据,而是作为叶子结点的索引;链表中的关键字是有序的。所有叶子结点都在同一层 B树和B+树结构上异同 同:都是平衡树,每个结点到叶子结点的高度都是相同的,也保证每个查询都是稳定,查询的时间复杂度是log2(n),利用平衡树的优势是可以很大程度加快查询的稳定性的。 异

千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕.

僤鯓⒐⒋嵵緔 提交于 2020-04-24 12:46:46
1、MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2.行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3.页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: MyISAM Heap Merge INNODB ISAM 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引 基本一致,但是辅索引不用保证唯一性。 InnoDb: 支持 ACID 的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制, 一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制; 主键索引采用聚集索引(索引的数据域存储数据文件本身)

谈谈MySQL的索引

会有一股神秘感。 提交于 2020-04-24 11:36:59
谈谈MySQL的索引 目录 索引 前言 是什么 B树 B+树 B树和B+树结构上异同 有什么用 怎么用 索引 前言 总所周知,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快。而支撑这一快速的背后就是索引;MySQL索引问题也是大家经常遇到的面试题模块,想想自己也没有去系统地总结过索引,所以记录这篇文章来讲下索引。下面还是按照是什么->有什么用->怎么用->来写 是什么 往往大家第一时间提到索引,可能就会说到它是一种数据结构,来提高查询效率的数据结构,用在常用来查询的字段上。但是原理是什么呢?为什么它就可以加快查询? 首先,现如今,数据库系统大多的索引底层结构是B树或者B+树,在数据结构的学习中,大家可能都有了解过,我们先简单介绍下这两种结构。 B树 特点:每个结点都有数据,同时还有指向其下子树的指针域,单个结构和链表的基本单元相似。 每个结点一个数据,等于就命中,小于该数据走左边,大于走右边 B+树 是B树的变形,多路搜索树,是一种稠密索引 特点:真实的数据存储在叶子结点的链表中,其他非叶子结点并没有数据,而是作为叶子结点的索引;链表中的关键字是有序的。所有叶子结点都在同一层 B树和B+树结构上异同 同:都是平衡树,每个结点到叶子结点的高度都是相同的,也保证每个查询都是稳定,查询的时间复杂度是log2(n),利用平衡树的优势是可以很大程度加快查询的稳定性的

MySQL确定了SQL问题并采取相应的优化措施

与世无争的帅哥 提交于 2020-04-24 10:03:23
打卡(2020-04-23) 确定了问题并采取相应的优化措施 一般的情况下采取的建立索引来解决检索问题 B-Tree索引:使我们最常见的索引类型,大部分引擎都支持 Hash索引:只有memory引擎上支持(主要是建立在Memory/Heap) R-Tree:空间索引 主要使用在地理位置使用 Full-text:全文索引,myisam引擎使用 索引 MyISAM引擎 InnoDB引擎 Memory引擎 B-Tree索引 支持 支持 支持 Hash索引 不支持 不支持 支持 R-Tree索引 支持 不支持 不支持 Full-text索引 支持 不支持 不支持 Hash注意点: 只有Memory/Heap引擎支持hash索引 hash适合k-v的查询 hash查询比B-tree更快 hash不支持范围查询例如:<,>,<=,>= hash只有在使用"="才会使用索引列 来源: oschina 链接: https://my.oschina.net/u/4274555/blog/3652047

Mysql的事务、视图、索引、备份和恢复

◇◆丶佛笑我妖孽 提交于 2020-04-24 05:18:01
事务 事务是作为单个逻辑工作单元执行的一系列操作 , 一个逻辑工作单元必须具备四个属性 . 即 : 原子性、一致性、隔离性、持久性,这些特性通常简称为 ACID. 原子性 (Atomicity) 事务是不可分割的工作逻辑单元 多个操作作为一个整体向系统提交,要么都执行,要么都不执行. 一致性 (Consistency) 当事务完成时,数据处于一致状态. 隔离性 (Isolation) 并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务。 持久性( Durability ) 事务完成后,它对数据库的修改被永久保持。 MYSQL中支持事务的储存引擎有InnoDB 和BOB; 开始事务 BEGIN 或 START TRANSACTION; 标记一个事物的起点 提交事务 COMMIT; 该语句标识一个事务的成功提交 回滚(撤销)事务 ROLLBACK;清除自事务起始点至该语句所做的所有数据更新 的操作. 视图 视图是另一种查看数据库中一个或多个表中数据的方法. 视图是一种虚拟表 来自一个或多个表的行或列的子集创建的.(也可以是全部的行和列.) 视图充当着查询中的指定表筛选器,定义视图的查询可以基于一个或多个表,也可以基于其他视图、当前数据库或其他数据库. 好处 : 对于用户 : 结果更容易理解 获取数据更容易 对于开发人员 : 限制数据检索更容易 维护应用程序更方便. 使用

mysql federated存储引擎

﹥>﹥吖頭↗ 提交于 2020-04-24 02:44:02
通过federated存储引擎建立远程连接表 # 开启federated存储引擎 SHOW ENGINES ; MyISAM YES InnoDB DEFAULT ... FEDERATED YES # 创建远程存储引擎表 CREATE TABLE FEDERATED_actor ( `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`actor_id`), KEY `idx_actor_last_name` (`last_name`) ) ENGINE =FEDERATED CONNECTION='mysql://root:123456@127.0.0.1:3306/sakila/actor'; # 注意:本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段 # 可以比远程表的字段少,但是不能多,本地存储引擎选择:ENGINE =FEDERATED 来源:

35道大厂常问的MySQL面试题,你都答得出来吗?

限于喜欢 提交于 2020-04-23 01:44:28
1、MySQL 中有哪几种锁? 1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: 1、MyISAM 2、Heap 3、Merge 4、INNODB 5、ISAM 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。 InnoDb: 支持 ACID 的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制; 主键索引采用聚集索引