存储引擎

MySQL存储引擎InnoDB与Myisam的六大区别

◇◆丶佛笑我妖孽 提交于 2019-11-28 14:57:38
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 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体系架构

徘徊边缘 提交于 2019-11-28 14:48:19
  MySQL数据库由三层组成,连接层,server层、存储引擎层,其中连接层指的是不同语言中与SQL的交互,server层包括SQL接口,连接池、分析器、优化器、执行器和查询缓存,存储引擎层最重要的就是存储引擎   以一条SQL语句的执行为例,SQL语句执行时,通过连接层和server层建立连接,进行权限验证,分析器对SQL语句做出分析并判断,优化器选择适当的索引,最后交给执行器来执行,先访问查询缓存,查询缓存中没有的话,在访问存储引擎层,更新会把存储引擎清除 来源: https://www.cnblogs.com/5945yang/p/11410574.html

记mysql一次莫名的1062错误

孤街浪徒 提交于 2019-11-28 14:44:50
1062 Duplicate entry '...' for key 'PRIMARY指的是主键重复或者唯一索引重复。 本来mysql表中未设主键和唯一索引,准备加上,但是设置的时候总是提示1062,提示的数据我看了,只有一行,并没有重复。 开始疯狂百度、谷歌,有说主从插入重复的,我直接把从数据库删了,依然报错、崩溃!!! 最后发现问题所在,把存储引擎由MyISAM 改成InnoDB,虽然依然有提示1062,但是提示的数据都是重复的, 也就是说当存储引擎是MyISAM 时,设置主键或者唯一索引时,如果有重复数据会提示1062但是提示的数据是最新一条的数据(错误的,没办法判断到底哪条有重复),当存储引擎是InnoDB时会提示正确的重复的那条数据。 来源: https://www.cnblogs.com/lwx521/p/11410377.html

MySQL学习笔记七:存储引擎

╄→尐↘猪︶ㄣ 提交于 2019-11-28 13:24:26
1.MySQL存储引擎的设计采用“插件式”方案,用户可以很方便地选择使用哪种存储引擎,想使用mysql没有提供的引擎时,可以自己安装进去。 查看支持的存储引擎 mysql> show engines\G *************************** 1. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engine Transactions: NULL XA: NULL Savepoints: NULL *************************** 2. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tables Transactions: NO XA: NO Savepoints: NO *************************** 3. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engine Transactions: NO

MySQL查看和修改表的存储引擎

心不动则不痛 提交于 2019-11-28 12:28:16
1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a、show table status from db_name where name='table_name'; b、show create table table_name; 如果显示的格式不好看,可以用\g代替行尾分号 有人说用第二种方法不准确,我试了下,关闭掉原先默认的Innodb引擎后根本无法执行show create table table_name指令,因为之前建的是Innodb表,关掉后默认用MyISAM引擎,导致Innodb表数据无法被正确读取。 3 修改表引擎方法 alter table table_name engine=innodb; 4 关闭Innodb引擎方法 关闭mysql服务: net stop mysql 找到mysql安装目录下的my.ini文件: 找到default-storage-engine=INNODB 改为default-storage-engine=MYISAM 找到#skip-innodb 改为skip-innodb 启动mysql服务:net start mysql 来源: oschina 链接: https://my.oschina.net/u/1582989/blog/323139

MySQL逻辑架构简介

久未见 提交于 2019-11-28 11:22:17
一、逻辑架构图总体概览   和数据库相比,MySQL有点与众不同,他的架构可以在多种不同场景中应用并发挥良好作用,主要体现在存储引擎的架构上, 插件式的存储引擎架构将查询处理和其他的系统任务以及数据存储的存储提取相分离 ,这种架构可以个根据业务的需求和实际需要选择合适的存储引擎。      可分为以下几层:      1、连接层       最上层是一些客户端和连接服务,包括本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引出了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSl的安全链接。服务器也会为安全接入的每个客户端验证它所具有的的操作权限。      2、服务层       第二层架构主要大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析及优化及部分内置函数的执行。所有跨存储引擎的功能也在这层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化,如确定查询表的顺序,是否利用索引等,最后生成相应的执行操作,如select语句,服务器还会查询内部的缓存。如果缓存空间足够大这样在解决大量读操作的环境中能够良好的提升系统的性能。      3、引擎层        存储引擎层

重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB

☆樱花仙子☆ 提交于 2019-11-28 10:34:29
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解数据库的有所帮助。 ![](https://img2018.cnblogs.com/blog/1092007/201908/1092007-20190824162501679-1707813820.png) 添加描述 本文中对于数据库的介绍以及研究都是在 MySQL 上进行的,如果涉及到了其他数据库的内容或者实现会在文中单独指出。 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有两个词非常容易混淆,也就是数据库和实例: 数据库:物理操作文件系统或其他形式文件类型的集合; 实例:MySQL 数据库由后台线程以及一个共享内存区组成; 对于数据库和实例的定义都来自于 MySQL 技术内幕:InnoDB 存储引擎 一书,想要了解 InnoDB 存储引擎的读者可以阅读这本书籍。 数据库和实例 在 MySQL 中,实例和数据库往往都是一一对应的,而我们也无法直接操作数据库

【MySQL】存储引擎

徘徊边缘 提交于 2019-11-28 07:47:22
原文: http://blog.gqylpy.com/gqy/245 目录 #. MySQL支持的存储引擎 1. InnoDB 2. MyISAM 3. NDB 4. Memory 5. Infobright 6. NTSE 7. BLACKHOLE MySQL中的库即文件夹,表即文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制.(如:处理文本用txt类型,处理表格用excel, 处理图片 用png等) 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. PS:存储引擎说白了就是如何存储数据,如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库 中数据 的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据库存储管理机制都是一样的,而MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 ![在这里插入图片描述](http://blog.gqylpy.com/media/ai/2019-03/f065e887-be54-4608-a236-c400c1478427.png) SQL解释器

1.1、Mysql 学习——从数据库事务规范 到 Mysql 的 InnoDB 对事务特性的具体实现

不问归期 提交于 2019-11-28 07:23:31
文章目录 前言 数据库事务 ACID的概念 ANSI SQL 隔离级别 Mysql 的服务器逻辑架构 Mysql 服务器层不负责事务 Mysql 服务器层和存储引擎 更细化的一个图片 存储引擎和事务 支持事务的存储引擎 MyISAM 不支持事物 存储引擎的混用 Mysql 支持表锁和行锁 Mysql 和表锁 Mysql和行锁 InnoDB 中的事务和锁 Mysql 默认的事务级别是 可重复读 MVCC的概念 InnoDB 对MVCC的实现 MVCC 在什么时候生效? InnoDB 的行锁 InnoDB 独有的间隙锁 间隙所生效的隔离级别 可重复读状态下的间隙锁可以起到 避免幻读的作用 参考资料 前言 体能状态先于精神状态,习惯先于决心,聚焦先于喜好。 数据库事务 ACID的概念 暂略 ANSI SQL 隔离级别 暂略 Mysql 的服务器逻辑架构 Mysql 的服务器逻辑架构分为 服务器层和存储引擎层,服务器层调用存储引擎层。 每一个表可以指定存储引擎的类型。 图片来自互联网 Mysql 服务器层不负责事务 Mysql 的服务层不负责事务的实现,具体事务的实现由存储引擎负责。 需要强调的是不是所有的存储引擎都支持事务。比如 InnoDB 支持,MyISAM 不支持。 Mysql 服务器层和存储引擎 更细化的一个图片 图片来自互联网 存储引擎和事务 支持事务的存储引擎 Mysql

InnoDB存储引擎的锁机制

南笙酒味 提交于 2019-11-28 06:08:35
数据库按照排他性来划分可划分为: 共享锁 shared(S)锁 持有共享锁允许执行读取数据的事务 排他锁 exclusive(X)锁 持有排他锁允许执行更新或删除的事务 意向锁    InnoDB 支持多粒度锁定 , 允许行锁和表锁共存。意向锁是表级锁,同时指示了稍后对表中的行操作需要的锁类型。     意图锁有两种类型: 意图共享锁 ( IS )指示一个事务打算 在表中各行设置一个共享锁。 意图独占锁 ( IX )指示一个事务打算在表中各行设置一个排他锁。    意向锁的获取规则: 在事务可以获取表中某行的共享锁之前,它必须首先获取 IS 表上的锁或更强。 在事务可以获取表中某行的独占锁之前,它必须首先获取 IX 表上的锁。          来源: https://www.cnblogs.com/0515web/p/11396483.html