MyISAM

MySQL入门(二)

故事扮演 提交于 2019-12-27 23:44:18
1. MySQL 架构 1.1 逻辑架构图 1.1.1 Connection Pool: 连接池 * 管理缓冲 用户连接 , 线程处理 等需要缓存的需求。 * 负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到 线程管理模块 。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。 * 而 连接线程 的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。 1.1.2 Parser: 解析器 * SQL 命令传递到解析器的时候会被解析器 验证和解析 。 主要功能: a . 将 SQL 语句进行 语义和语法的分析,分解成数据结构 ,然后按照 不同的操作类型进行分类, 然后做出针对性的转发到后续步骤,以后 SQL 语句的传递和处理就是基于这个结构的。 b. 如果在分解构成中遇到错误,那么就说明这个 sql 语句是不合理的 1.1.3 Optimizer: 查询优化器 * SQL 语句在查询之前会 使用查询优化器对查询进行优化 。 * 它使用的是“ 选取 - 投影 - 联接 ”策略进行查询。 用一个例子就可以理解: select uid,name from user

MySQL索引(详细解释)

女生的网名这么多〃 提交于 2019-12-26 22:57:21
什么是索引 索引是一种 可以加快检索的数据结构 ,它 包含从表或者视图的一列或者多列生成的键 ,以及 映射到指定数据存储位置的指针 。 我们可以把数据库看成一本书,索引就是书的目录,借助目录查找信息,显然要比没有目录的书查起来要方便快捷。 索引的作用就是提高查询效率 那么索引能提高查询效率,我们就要创建很多索引么? 不是的,索引最终是存储在硬盘上的,索引越多,那么存储索引的文件就会越大,电脑在使用索引的时候,是先将索引文件加载到内存上,然后再加载到CPU上。所以,索引如果过多,会加重内存和磁盘的交互负担。 并且,数据的改动也会对索引造成影响。 总结:索引可以提高查询效率,但并不是越多越好,过多的索引会引起磁盘I/O的交互频繁,并且数据改动,索引也会受到影响。 索引分类 普通索引 :没有任何条件现制,可以给任意字段添加普通索引。 Student表中的字段有SID,Sname,Sage,Ssex, 对其中任意的一个字段都可以创建索引,没有任何现制,这就是普通索引 唯一性索引 :唯一性索引顾名思义,它可以保证索引中的所有的值都是唯一的,使得表中的每一行在某种方式上都具备唯一性。所以, 只有当唯一性是数据本身的特征的时候,指定唯一性索引才有意义。 例如:主键,在表中是不能重复的,主键索引,就是唯一性索引。 SID就是Student表的主键,SID是不会重复的字段,也就是唯一性字段

mysql存储引擎

独自空忆成欢 提交于 2019-12-26 10:46:35
数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据 。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。 因为在关系数据库中数据的存储是以表的形式存储的,所以 存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)。 如创建一个InnoDB类型的表: CREATE TABLE `brand` ( `id` int(11) NOT NULL AUTO_INCREMENT, `brand_name` varchar(64) NOT NULL, `brand_logo` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `parent_id` int(11) NOT NULL, `layer` int(11) NOT NULL DEFAULT '0', `enabled` int(11) NOT NULL DEFAULT '0', `path` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `brand_name` (`brand_name`) )

MyISAM InnoDB 区别

拜拜、爱过 提交于 2019-12-26 03:54:41
转载:http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html MyISAM 和 InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。   以下是一些细节和具体实现的差别:   ◆1.InnoDB不支持FULLTEXT类型的索引。   ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。   ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。   ◆4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。   ◆5.LOAD TABLE FROM

MyISAM InnoDB 区别

白昼怎懂夜的黑 提交于 2019-12-26 03:51:55
MyISAM 和 InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。   以下是一些细节和具体实现的差别:   ◆1.InnoDB不支持FULLTEXT类型的索引。   ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。   ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。   ◆4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。   ◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表

MyISAM InnoDB 区别

时光总嘲笑我的痴心妄想 提交于 2019-12-26 03:48:40
  MyISAM 和 InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。   以下是一些细节和具体实现的差别:   ◆1.InnoDB不支持FULLTEXT类型的索引。   ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。   ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。   ◆4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。   ◆5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表

Mysql 表类型

天大地大妈咪最大 提交于 2019-12-26 03:46:00
MySQL为我们提供了很多表类型供选择,有MyISAM、ISAM、HEAP、BerkeleyDB、InnoDB,MERGE表类型, 萝卜白菜各有所爱是不假,可是真正选择何种表类型还是要看业务需要啊 ,每一种表类型都有其自己的属性和优点。下面我们来简单的讨论一下。 MyISAM表类型: MyISAM表(TYPE=MYISAM)是ISAM类型的一种延伸,具有很多优化和增强的特性。 是MySQL的默认表类型。 MyISAM优化了压缩比例和速度,并且可以很方便的在不同的操作系统和平台之间进行移植。 MyISAM支持大表文件(大于4G) 允许对BLOB和TEXT列进行索引 支持使用键前缀和使用完整的键搜索记录 表数据和表索引文件可以依存在不同的位置,甚至是不同的文件系统中。 即使是具有相当多的插入、更新和删除操作的表,智能防碎片逻辑也能保证其高性能的协作性。 ISAM表类型: ISAM表(TYPE=ISAM)和MyISAM表相似,但是其没有MyISAM格式的很多增强性能,因而不能像MyISAM类型那样提供很好的优化和执行效率。因为 ISAM索引不能被压缩 ,它比在MyISAM中的相同索引战胜较少的系统资源。 ISAM索引需要较多的磁盘空间 ,这对于像本站的这种小型环境很是问题。呵呵。 和MyISAM一样,ISAM表可以是固定长度的,也可以是可变长度的,但是其格式的最大键长度比较小,

Mysql数据库表的类型有哪些

家住魔仙堡 提交于 2019-12-26 03:43:45
截至目前,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIASM、InnoDB以及Gemeni这7种Mysql表类型。其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。 DBD Berkeley DB(DBD)表是支持事务处理的表,由Sleepycat软件公司开发。它提供MySQL用户期待已久的功能--事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。 HEAP HEAP表是MySQL中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失。 ISAM ISAM表是早期MySQL版本的缺省表类型,直到MyIASM开发出来。建议不要再使用它。 MERGE MERGE是一个有趣的新类型,在3.23.25之后出现。一个MERGE表实际上是又一个MyISAM表的集合,合并而成的一个表,主要是为了效率的考虑,因为这样不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。 MyIASM MyIASM基于了IASM代码,应该可以说是IASM的衍生品,不过增加了不少有用的扩展。它是MySQL的默认数据表类型,基于了传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法

Mysql 索引

偶尔善良 提交于 2019-12-26 00:25:49
原文: mysql索引详解 一. 索引的定义    索引用于快速找出在某个列中有一特定值的行   不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,   如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。   MySQL中的索引的 存储类型 有两种: B+TREE 、 HASH 。 二. 优缺点 1. 优点 所有的MySql列类型(字段类型)都可以被索引,也就是可以给 任意字段设置索引 提高数据的 查询速度 2. 缺点 创建索引和维护索引要 耗费时间 ,并且随着数据量的增加所耗费的时间也会增加 索引也需要 占用空间 ,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值 当对表中的数据进行增加、删除、修改时,索引也需要 动态维护 ,降低了数据的维护速度。 3. 使用原则 对 经常更新的表 就 减少索引 的设置,对 经常用于查询的字段 应该 创建索引 , 数据量小 的表最好 不要使用索引 ,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。 在 相同值多 的列上(字段上) 不要建立索引 ,比如在学生表的"性别"字段上只有男,女两个不同值。相反的

mysql技术索引--(mysql学习二)

偶尔善良 提交于 2019-12-25 11:56:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 索引类型: 普通类型索引 primary key foreign key unique index non-unique 专业索引: --b-tree 平衡数索引,有别于二叉树.二叉树高度可能很高平衡树不会很高一般3、4层. b+tree b-tree是逻辑叫法,b+tree是技术实现.有一部分存储在内存不够时会放到磁盘上.(innodb、MyISAM、Memery等) r-tree 空间索引(MyISAM) full text全文索引.(MyISAM) hash index(Memery) 索引目的: 减少I/O,会提供查询速度,会影响dml速度. 选择性:返回行占整个记录的比例 索引类型:前缀索引、复合索引、函数索引的变通(通过增加列和触发器实现)、全文索引 复合索引:oracle有index skip算法可以使不是引导列的索引被使用.mysql必须按照定义顺序使用复合索引. 全文索引:主要是查询单词. ...where match(列) aginst('字符' in 模式).有3中模式boolean(支持运算符表达式)、自然语言、扩展自然语言. select title from books where mathc(title) against('prince') select title,author