存储引擎

《mysql性能调优与架构设计》笔记: 二存储引擎

我们两清 提交于 2020-12-12 18:58:07
3.1 概述: 1,MYISAM 是mysql 5.5以前版本的默认引擎,5.5以后默认存储引擎是innodb 2、查看mysql存储引擎命令,在mysql>提示符下搞入show engines;字段 Support为:Default表示默认存储引擎 3、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句 3.2 MYISAM存储引擎概述: 1,MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件 .frm,.MYI,MYD三个文件的作用第二章中以说明;注意,不管某个表有多少个索引,都是存放在MYI这个文件中 2, MyISAM 支持以下三种类型的索引: 1、B-Tree 索引 B-Tree 索引,顾名思义,就是所有的索引节点都按照 balance tree 的数据结构来 存储,所有的索引数据节点都在叶节点。 2、R-Tree 索引 R-Tree 索引的存储方式和 b-tree 索引有一些区别,主要设计用于为存储空间和多 维数据的字段做索引,所以目前的 MySQL 版本来说,也仅支持 geometry 类型的字段作索引。 3、Full-text 索引 Full-text 索引就是我们长说的全文索引,他的存储结构也是 b-tree。主要是为了 解决在我们需要用

时势造英雄、仅此怀念伟大人(第十四周)

本秂侑毒 提交于 2020-04-07 14:34:20
一、 导入hellodb.sql生成数据库 1、打开数据库,然后使用mysql uroot -predhat打开数据库; 2、导入数据内容;rz导入hellodb_innodb数据库; 3、导入数据内容,数据库出现hellodb数据库; (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄; (2) 以ClassID为分组依据,显示每组的平均年龄; (3) 显示第2题中平均年龄大于30的分组及平均年龄; (4) 显示以L开头的名字的同学的信息; 二、数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql 测试 三、总结mysql常见的存储引擎以及特点。 MyISAM ①不支持事务 ②表级锁定 ③读写相互阻塞,写入不能读,读时不能写 ④只缓存索引 ⑤不支持外键约束 ⑥不支持聚簇索引 ⑦读取数据较快,占用资源较少 ,不支持MVCC(多版本并发控制机制)高并发 ⑧崩溃恢复性较差 ⑨MySQL5.5.5前默认的数据库引擎 ,查询速度快、存储空间小,原因是在磁盘上分成三个文件存储:.frm(存储表定义),.MYD(MYData,存储数据),.MYI(MYIndex,存储索引),SELECT COUNT() FROM TABLE时,避免了全表扫描。 1、MyISAM存储引擎适用场景 只读(或者写较少)、表较小(可以接受长时间进行修复操作)

MYSQL杂记

最后都变了- 提交于 2020-04-06 08:28:07
数据库范式:1234 表中不能有重复字段,且字段不能拆分 DDL数据定义语言 DML DCL INNODB,mysam:mysql常用的表类型 mysql默认端口3306 mysql分为客户端和服务器,只有服务器端开启以后,客户端才可以使用服务。安装时选择自动启动服务时,每次开机都会自动启用mysql服务。手动启动方式:控制面板--性能与维护--管理工具--服务--MySQL--启动(或右击设置) 服务启动后可以通过客户端登陆。 (1)DOS界面客户端登陆 mysql -h localhost -u root -p ;或\g来结束命令 exit退出 (2)运行中直接输入mysql -h localhost -u root -p或者mysql -h 127.0.0.1 -u root -p (3)开始菜单中找到mysql command line client mysql需要配置path变量(bin文件夹的路径) mysql配置:(1)开始菜单中MYSQL选项中有配置选项,选重新配置 (2)修改配置文件:安装目录下 bin文件下为常用命令可执行文件;lib为库文件;share为字符集信息;my.ini为配置文件;其他.ini为配置文件模板。datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL

MySQL各种存储引擎对比

六月ゝ 毕业季﹏ 提交于 2020-04-06 04:04:45
欢迎观看 {无双}(wushuang) 的读书笔记,您可以通过订阅 无双的公众号或微博或头条号 持续关注最新的文章。 头条号ID:1656865998770190 微信公众号:落叶飞翔的蜗牛 开源中国博客: https://my.oschina.net/zhouguanya QQ:3190976240 MySQL数据库区别于其他数据库的最重要的一个特点是其插件式的存储引擎。 MySQL各类存储引擎 InnoDB存储引擎 从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。 InnoDB存储引擎支持事务,其设计目标主要是面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。 InnoDB通过使用多版本并发控制MVCC来获取高并发性,并且实现了SQL标准的4种隔离级别,默认为repeatable级别。同时,使用一种称为next-key locking的策略避免幻读现象的产生。除此之外,InnoDB存储引擎还提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用的功能。 对于表中存储的数据,InnoDB存储引擎采用聚集的方式,每张表的存储都是按照主键的顺序进行存放的。如果没有显示的在定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID作为主键。 MyISAM存储引擎

MySQL 21道高频面试题及其解析

人盡茶涼 提交于 2020-04-03 23:52:04
Q1:MySQL主要有哪些存储引擎,分别适合哪些应用场景? 答:主要有①MyISAM,是5.5版本之前的默认存储引擎,支持表级锁,不支持事务和外键,并发效率较低,读取数据快,更新数据慢。适合以读操作为主,并且对并发性要求较低的应用。②InnoDB,MySQL目前的默认存储引擎,支持行级锁、事务和外键,并发效率好。适合对事务的完整性和并发性、数据的准确性要求比较高,增删操作多的应用。③Memory,所有的数据都保存在内存中,访问速度快,一旦服务关闭数据将丢失。适合更新不太频繁的数据量小的表用来快速得到访问结果。④Archive、Federated等。 Q2:索引是什么? 答:MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 Q3:索引的优缺点有哪些? 答:①优势:提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。②劣势:实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。 虽然索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE

MySQL 支持的存储引擎

拜拜、爱过 提交于 2020-04-02 19:59:07
参考资料: C语言中文网 存储引擎: 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 注:InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。 MySQL v5.7支持的存储引擎: 显示可用的数据库引擎和默认引擎的语句: mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB |

InnoDB存储引擎的记录格式

馋奶兔 提交于 2020-03-31 20:47:57
  InnoDB是存储引擎,负责将磁盘的数据按照我们的逻辑概念“表”那样存取,这里首先总结下表中每一行数据是以何种形式被InnoDB存储再磁盘的。InnoDB的行记录存储形式有很多种,compact、dynamic、redundant、compressed等。下面介绍compact格式的行数据结构: 每一行的数据组成   除了我们自己的真实数据外,为了提高性能和用于存取这行InnoDB需要加上必要的数据,这叫做额外信息。每一行数据都由 额外信息 + 真实数据 组成。 其中额外信息里又分为变长字段长度列表、null字段列表、记录头信息(记录头信息有很多用于存取行、管理行的数据);真实数据也并不是只有我们自己设置的数据,mysql还会为其添加一些字段例如:事务Id、回滚指针、行Id(没有设置主键时用于唯一标识行)。 额外信息的变长字段长度列表   如果某个字段设置为变长,mysql必须知道这个字段实际长度,不然mysql取这个字段时根本不知道取多少。变长字段的长度就存放在额外信息的变长字段长度列表里,但是不是顺序的而是倒序的。当然,如果这一行没有变长字段,这一个列表就不存在。例如:表中有如下数据: a(varchar(255)) | b (varchar(256)) | c(varchar(256)) ------------------------------------------

MySQL数据库存储引擎

孤者浪人 提交于 2020-03-29 01:22:06
这里主要介绍最常用的两种存储引擎。 1.InnoDB InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这类型的文章。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。 适用场景: 1)经常更新的表,适合处理多重并发的更新请求。 2)支持事务。 3)可以从灾难中恢复(通过bin-log日志等)。 4)外键约束。只有他支持外键。 5)支持自动增加列属性auto_increment。 2.MyIsam MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入

MySQL存储引擎介绍

狂风中的少年 提交于 2020-03-28 07:43:50
一 存储引擎解释   首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点。     在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs、fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。 那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件的系统格式特征类似,也有很多种存储方式。   但是对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户能够看到的数据是一样的。不同储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不同,那么就会呈现出不同存储引擎有着一些自己独有的特点和功能,对应着不同的存取机制。   因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即:对表的存储、操作等的实现方法不同),表是什么,表本质上就是磁盘上的文件。   其实MySQL支持多种存储引擎

MySQL4:索引

百般思念 提交于 2020-03-28 04:26:55
什么是索引 索引是对数据库表中一列或者多列的值进行排序的一种结构,所引用于快速找出在某个 列中有一特定值的行。不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多,如果表中查询的列有 一个索引,MySQL能快速到达一个位置去搜索数据文件,而不必查看所有数据。 索引的含义和特点 索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引用于快速找出在某个或多个列中有一特定值的行,所有MySQL列类型都可以被索引,对相关列使用索引是提高查询操作速度的最佳途径。 例如,数据库里面有20000条记录,现在要执行这么一个查询:SELECT * FROM table where num = 10000。如果没有索引,必须遍历整个表,直到num等于10000的这一行被找到为止;如果在num列上创建索引,MySQL不需要任何扫描,直接在 索引中找10000,就可以得知值这一行的位置。可见,索引的建立可以提高数据库的查询速度。 索引是在存储引擎中实现的,因此,每种存储引擎的索引都不一定完全相同,并且每种 存储引擎也不一定支持所有索引类型。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的额限制,MySQL中索 引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关