存储引擎

【MySQL】存储引擎 -- 2019-08-08 20:39:50

自古美人都是妖i 提交于 2019-11-26 14:16:40
原文: http://106.13.73.98/__/19/ 目录 #. 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://106.13.73.98/media/ai/2019-03/f065e887-be54-4608-a236-c400c1478427.png) SQL解释器、SQL优化器、缓冲池

mysql

主宰稳场 提交于 2019-11-26 12:25:14
1 MySQL的体系结构概述 整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Interface :SQL接口组件 Parser :查询分析器组件 Optimizer :优化器组件 Caches & Buffers :缓冲池组件 Pluggable Storage Engines :存储引擎 File System :文件系统 1)连接层 最上层是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 2)服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等,最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大

MySQL的索引与事务、存储引擎MyISA和InnoDB(重点理论!!!)

被刻印的时光 ゝ 提交于 2019-11-26 02:51:34
索引的概念 数据库中的索引与书籍中的目录类似 在一本书中,无须阅读整本书,利用目录就可以快速查找所需信息 书中的目录是一个词语列表,其中注明了包含各个词的页码 数据库索引 在数据库中,索引数据库程序无须对整个表进行扫描,就可以在其中找到所需数据 数据库中的索引是某个表中一列或者若干列值的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率; 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍; 可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本; 通过创建唯一性索引保证数据表数据的唯一性; 可以加快表与表之间的连接; 在使用分组和排序时,可大大减少分组和排序时间; 索引的分类 普通索引 这是最基本的索引类型,而且它没有唯一性之类的限制 唯一性索引 这种索引和前面的"普通索引"基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一 主键 主键是一种唯一性索引,但它必须制定为"PRIMARY KEY" 全文索引 全文索引的类型是FULLTEXT,可以在VARCHAR或者TEXT类型的列上创建 单列索引与多列索引 索引可以是单列上创建的索引,也可以是在多列上创建的索引 创建索引的原则依据 表的主键,外键必须有索引; 数据量超过300行的表应该有索引;

二、锁的分类及特性

限于喜欢 提交于 2019-11-25 20:48:31
【转】锁的分类及特性 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问时变得有序所设计的一种规则。 对于任何一种数据库来说都需要有相应的锁定机制,所以 MySQL 自然也不能例外。 MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样。 为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。 MySQL 各存储引擎使用了三种类型(级别)的锁定机制: 表级锁定 行级锁定 页级锁定 表级锁定(table-level) 表级别的锁定是 MySQL 各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。 所以获取锁和释放锁的速度很快。由于表级锁定一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。 当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并大度大打折扣。 使用表级锁定的主要是 MyISAM,MEMORY,CSV 等一些非事务性存储引擎。   行级锁定(row-level) 行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。 由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小