MyISAM

【mysql】mysql总述——存储引擎、索引、触发器、事务以及简单的SQL语句等

一个人想着一个人 提交于 2019-11-27 16:10:44
rhel-server-6.3-i386-dvd.iso service mysqld start mysql -u root -p service mysqld start 提起服务器端; mysql -u root -p 连接到 mysql 服务器上; 一、存储引擎(重点掌握MYISAM INNODB) (一)MYISAM存储引擎: 不支持外键、不支持事务; 支持全文索引、 支持表锁、底层用B+树实现; 会生成的文件:.frm:存储所有的创建信息;.myi:MYISAM的索引;.myd:存储数据 使用非聚簇索引,并且也可以无索引; (二)INNODB存储引擎 不支持全文索引; 支持外键、支持事务、支持行锁、底层用B+树实现; INNODB是将数据和索引放在一起。 Innodb采用聚集索引的方式。有主键建立主键索引,没有主键有唯一键建立唯一索引;没有主键,没有唯一键,为每一行生产一个6字节的行id,作为主键。隐藏autoincreament可自增长; 主索引:叶子节点存放真实的数据;进行查询时需要一次查找; 辅助索引:叶子结点存放主索引的索引值;进行查询时需要两次查找; (三)Memory存储引擎 数据是存放在内存中的;将数据放在内存中,如果数据库重启或者宕机,表数据就会丢失。非常适合存储一些临时表,默认的是哈希索引,不是B+树索引,varchar()默认是按照char()存储的

MySQL相关

梦想与她 提交于 2019-11-27 15:58:40
一、SELECT语句的执行顺序 from->on->join->where->group by->聚集函数->having->计算表达式->select->distinct->order by->top 二、存储过程 存储过程是一个可编程的函数,它在数据库中创建并保存。优点有: 1、存储过程能实现较快的执行速度 2、存储过程允许标准组件式编程。 3、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 4、存储过程可被作为一种安全机制来充分利用。 5、存储过程能够减少网络流量 存储过程和函数的异同点 相同点:存储过程和函数都是为了可重复的执行操作数据库的sql 语句的集合。 不同点: 1、标识符不同,函数的标识符是function,存储过程是proceduce。 2、函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。 3、函数使用select 调用,存储过程需要使用call 调用。 三、事务的特性 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。 3、隔离性(Isolation):事务的执行不受其他事务的干扰

【MySQL】存储引擎 -- 2019-08-17 02:28:42

放肆的年华 提交于 2019-11-27 14:21:16
原文: 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解释器

【MySQL】存储引擎 -- 2019-08-17 02:21:30

徘徊边缘 提交于 2019-11-27 14:20:21
原文: 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解释器

mysql中myISAM不支持外键

左心房为你撑大大i 提交于 2019-11-27 12:58:24
CREATE TABLE t1( id INT PRIMARY KEY AUTO_INCREMENT )ENGINE = 'myisam'; CREATE TABLE `grade`( t2_id INT PRIMARY KEY AUTO_INCREMENT, t1_id INT )ENGINE = 'myisam'; ALTER TABLE t2 ADD CONSTRAINT FK_t1_id_id FOREIGN KEY(t1_id) REFERENCES t1(id); # 查询默认存储引擎、 SHOW VARIABLES LIKE 'stora%' 来源: https://blog.csdn.net/sanjiaowuhuan/article/details/99678761

mysql数据库总结。

前提是你 提交于 2019-11-27 12:12:15
mysql MySQL语法 MySQL采用结构化查询语言SQL (Structured Query Language)语言来操作数据库 SQL语句必须以 ; 结束 SQL语句分类 DDL(数据定义语言): create、drop、alter、truncate DQL(数据查询语言): select、show DML(数据操作语言): insert、update、delete DCL (数据控制语言): grant、revoke、begin transaction、commit、roolback MySQL存储引擎 MySQL数据表类型由存储引擎来决定,主要有6种类型:InnoDB 、BDB、MyISAM、ISAM、、Heap、Merge InnoDB 支持事务 支持外键 不支持数据压缩 写速度较慢 MySQL5.5开始支持全文索引 占用更多的内存和磁盘空间来保留数据和索引 MyISAM 不支持事务 不支持外键 访问速度快 支持全文索引 数据库的备份还原 #方法一 mysqldump -h服务器 -P端口 -u用户名 -p密码 数据库名称 > 备份文件路径 source 备份文件路径 #方法二 直接备份数据库文件(注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同) #方法三 使用第三方工具 例如:Navicat

MyISAM与InnoDB的索引实现

岁酱吖の 提交于 2019-11-27 12:07:26
1、MyISAM 使用B+Tree 作为索引结构,叶子节点的data存放指针,也就是记录的地址。对于主键索引和辅助索引都是一样的。 2、InnoDB 也使用B+Tree作为索引结构,也别需要注意的是,对于主键索引,InnoDB 使用聚集索引,InnoDB的数据文件本身就是就是索引文件。而MyISAM,主键索引和数据文件是分离的。 3、InnoDB数据文件,要按主键聚集索引,这就要求InnoDB的表必须要有主键(MyISAM可以没有)。如果没有显式指定主键,InnoDB会自动选择一个可以唯一标识记录的字段作为主键,比如auto_increment的字段,如果不存在这样的列,InnoDB会自动生成一个隐含字段作为主键,这个隐含字段6个字节,是长整形。 4、对于InnoDB的辅助索引,叶子节点的data存放的是主键的值。这就意味着,使用辅助索引定位记录,需要使用两次索引:首先使用辅助索引找到主键的值,根据主键的值,使用主键索引找到记录。 5、InnoDB的辅助索引为什么要这样设计? 如果辅助索引data存放的行指针,当行移动或者数据页分裂时,需要更新data域行指针的值,这就增加维护成本。data存在主键的值,就没有这个问题。行移动和数据页分裂,主键索引会自动更新。data关联主键的值,不需要更新,相当于增加一个间接层。这个间接层对性能的影响也很小,因为通过主键定位记录是非常快的。 6

MyISAM与InnoDB的索引差异

血红的双手。 提交于 2019-11-27 12:07:13
数据库的索引分为主键索引(Primary Index)与普通索引(Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引的,又有什么差异呢? 一、MyISAM的索引 MyISAM的索引与行记录是分开存储的,叫做非聚集索引(UnClustered Index)。 其主键索引与普通索引没有本质差异:   有连续聚集的区域单独存储行记录   主键索引的叶子节点,存储主键,与对应行记录的指针   普通索引的叶子节点,存储索引列,与对应行记录的指针 MyISAM的表可以没有主键。 主键索引与普通索引是两颗独立的索引B+树,通过索引列查找时,先定位到B+树的叶子节点,再通过指针定位到行记录。 举个例子,MyISAM: t(id PK,name KEY,sex,flag); 表中有四条记录: 1, shenjian, m, A 3, zhangsan, m, A 5, lisi, m, A 9, wangwu, f, B 其B+树索引构造如上图:   行记录单独存储   id为PK,有一颗id的索引树,叶子指向行记录   name为KEY,有一颗name的索引树,叶子也指向行记录 二、InnoDB的索引 InnoDB的主键索引与行记录是存储在一起的,故叫做聚集索引(Clustered Index):   没有单独区域存储行记录   主键索引的叶子节点

了解MyISAM与InnoDB的索引差异(转)

孤人 提交于 2019-11-27 12:06:57
出处原文: 1分钟了解MyISAM与InnoDB的索引差异 数据库的索引分为 主键索引 (Primary Inkex)与 普通索引 (Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引,其又有什么差异呢?这是今天要聊的内容。 一,MyISAM的索引 MyISAM的 索引与行记录是分开存储的 ,叫做 非聚集索引 (UnClustered Index)。 其主键索引与普通索引没有本质差异: 有连续聚集的区域 单独存储行记录 主键索引的叶子节点,存储主键,与对应行记录的 指针 普通索引的叶子结点,存储索引列,与对应行记录的 指针 画外音:MyISAM的表可以没有主键。 主键索引与普通索引是两棵独立的索引B+树,通过索引列查找时,先定位到B+树的叶子节点,再通过指针定位到行记录。 举个例子,MyISAM: t(id PK, name KEY, sex, flag); 表中有四条记录: 1, shenjian, m, A 3, zhangsan, m, A 5, lisi, m, A 9, wangwu, f, B 其B+树索引构造如上图: 行记录单独存储 id为PK,有一棵id的索引树,叶子指向行记录 name为KEY,有一棵name的索引树,叶子也指向行记录 二、InnoDB的索引 InnoDB的 主键索引与 行记录是存储在一起的,故叫做

MySQL表级锁和行级锁

£可爱£侵袭症+ 提交于 2019-11-27 10:35:55
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情况下是采用行级锁。 MySQL主要的两种锁的特性可大致归纳如下:  表级锁: 开销小,加锁快;不会出现死锁(因为MyISAM会一次性获得SQL所需的全部锁);锁定粒度大,发生锁冲突的概率最高,并发度最低。  行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 考虑上述特点,表级锁使用与并发性不高,以查询为主,少量更新的应用,比如小型的web应用;而行级锁适用于高并发环境下,对事务完整性要求较高的系统,如在线事务处理系统。 二:MyISAM锁细述 (1). 锁模式 MySQL的表级锁有两种模式: 表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。 (2). 如何加锁 当MyISAM在执行查询语句时,会自动给涉及到表加读锁,在执行更新操作时,会加写锁。当然用户也可以用LOCK TABLE 去显式的加锁。显式的加锁一般是应用于:需要在一个时间点实现多个表的一致性读取,不然的话,可能读第一个表时