存储引擎

MySQL数据库基础(一)——MySQL数据库简介

a 夏天 提交于 2019-12-03 16:21:34
MySQL数据库基础(一)——MySQL数据库简介 一、MySQL简介 1、MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。目前MySQL被广泛地应用在Internet上的中小型网站中,由于体积小、速度快、总体拥有成本低,开放源码、免费,一般中小型网站的开发都选择Linux + MySQL作为网站数据库。 MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。 MySQL的官方网站的网址是:www.mysql.com 2、MySQL特性 MySQL是一种使用广泛的数据库,特性如下: A、使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性    B、支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。    C、为多种编程语言提供了API。编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。    D、支持多线程,充分利用CPU资源    E、优化的SQL查询算法,有效地提高查询速度    F

Day 37 SQL基础(五)

牧云@^-^@ 提交于 2019-12-03 05:01:07
目录 事务处理 开始事务 回滚事务 提交事务 事务的特性 存储引擎 什么是存储引擎 各存储引擎的特性 概览 各种存储引擎的特性 各存储引擎的介绍 视图 创建视图 删除视图 修改视图 触发器 创建触发器 删除触发器 存储过程 创建无参存储过程 创建有参存储过程 执行存储过程 删除存储过程 SQL函数 事务处理 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性 开始事务 start transaction 标识事务的开始 回滚事务 rollback 用来回退(撤销)SQL语句 select * from users; start transaction; update users set age = 18 where id = 120; delete from users where name = 'tiny'; rollback; select * from users; rollback只能在一个事务处理内使用,在执行一条start transaction命令之后 提交事务 commit 一般的MySQL语句都是直接针对数据库表执行和编写的.这就是所谓的隐含提交,即提交(写或保存)操作是自动进行的. 但是.在事务处理块中,提交不会隐含地进行.为进行明确的提交,使用commit语句 start transaction;

Innodb存储引擎

匿名 (未验证) 提交于 2019-12-03 00:30:01
Innodb存储引擎 一次写入操作是一次事务,innodb 首先把事务数据写入到缓存池 Buffer Pool 和重做日志redo log中,然后就可以提交事务,响应客户端了。之后 innodb 再将新事务的数据异步地写入磁盘,真正存储起来。 Innodb主要是通过事务日志实现ACID特性 事务日志包括:重做日志redo和回滚日志undo Redo记录的是已经全部完成的事务,就是执行了提交的事务,记录文件是ib_logfile0 ib_logfile1 Undo记录的是已部分完成并且写入硬盘的未完成的事务,默认情况下回滚日志是记录下表空间中的(共享表空间或者独享表空间) 一般情况下,mysql在崩溃之后,重启服务,innodb通过回滚日志undo将所有已完成并写入磁盘的未完成事务进行回滚,然后redo中的事务全部重新执行一遍即可恢复数据,但是随着redo的量增加,每次从redo的第一条开始恢复就会浪费长的时间,所以引入了checkpoint机制 1.缓存池 buffer pool 数据的读写需要经过缓存(缓存在buffer pool 即在内存中) 数据以整页(16K)位单位读取到缓存中 缓存中的数据以LRU策略换出(最少使用策略) IO效率高,性能好(不用IO) 读操作: 数据是以页为存储单位,在缓冲池中缓存了很多数据页,当第一次读取时首先将页从磁盘读取到缓存池中

MySQL技术内幕2InnoDB存储引擎

非 Y 不嫁゛ 提交于 2019-12-02 23:12:08
InnoDB 通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎 OLTP应用:On-Line Transaction Processing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。 2.1InnoDB存储引擎概述 该存储引擎是第一个完整支持ACID事务的MySQL存储引擎,其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效的利用以及使用内存和cpu 2.2InnoDB存储引擎版本 MySQL5.1:允许存储引擎以动态方式加载引擎;两个引擎,静态引擎,动态加载引擎(InnoDBPlugin)InnoDB1.0.x,增加compress和dynamic页格式 MySQL5.5:支持InnoDB1.1.x,增加了Linux AIO\多回滚段 MySQL5.6:InnoDB1.2.x,增加了全文索引支持,在线索引添加 2.3InnoDB体系架构 后台线程 内存池 磁盘文件 2.3.1后台线程 Master Thread 主要负责讲缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(INSET BUFFER)、UNDO页的回收等 IO Thread 主要负责IO请求的回调处理。

MySQL数据库的事务及存储引擎

。_饼干妹妹 提交于 2019-12-02 22:09:20
一、关系型数据库与非关系型数据库  1.关系型数据库的特点:   1)数据以表格的形式出现   2)每行为各种记录名称   3)每列为记录名称所对应的数据域   4)许多的行和列组成一张表单   5)若干的表单组成数据库  2.关系型数据库的优势:    2.1 复杂的查询:可以使用SQL语句方便地在一个表以及多个表之间做非常复杂的数据查询。    2.2 事务支持:使得对于安全性能很高的数据访问要求得以实现。  3.非关系型数据库的优势:    3.1 性能:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。    3.2 可扩展性:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。  问题:三种传统数据库之间的区别?   答:三者之间是根据数据之间的联系而去别的,层次性数据库是树形结构、网状型数据库是链接指针结构、关系型数据库是二维表结构。 二、事务(ACID)   事务(transaction)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元。   事务必须具备以下四个属性,简称ACID属性:      原子性(atomicity) :事务是一个完整的操作。事物的各部操作是不可分的(原子的);要么都执行,要么都不执行

MySQL入门到精通(五 )

匿名 (未验证) 提交于 2019-12-02 22:06:11
5.1 MySQL存储引擎 5.1.1 MySQL存储引擎的概率 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。 这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。 5.1.2 查询MySQL中支持的存储引擎 1.查询支持的全部存储引擎 在MySQL中,可以使用SHOW ENGINES语句查询MySQL中支持的存储引擎;语句如下: SHOW ENGINES; SHOW ENGINES语句可以用‘;’结束,也可以用‘\g’或者‘\G’结束。‘\g’与‘;’的作用是相同的,‘\G’可以让结果显示的更加美观。以下是三种查询结果: show

mysql存储引擎(innodb & myisam)

匿名 (未验证) 提交于 2019-12-02 22:06:11
常用的主要分为两种,一种是innodb,一种是myisam,两者的主要区别是 1、myisam不支持事务处理,而innoDB支持事务处理 2、myisam 不支持外键,innoDB支持外键 3、myisam支持全文检索,而innoDB在MySQL5.6版本之后才支持全文检索 4、数据的存储形式不一样,mysiam表存放在三个文件:结构、索引、数据,innoDB存储把结构存储为一个文件,索引和数据存储为一个文件 5、myisam在查询和增加数据性能更优于innoDB,innoDB在批量删除方面性能较高。 6、myisam支持表锁,而innoDB支持行锁 mysql的静态表和动态标的区别,MyISAM和InnoDB的区别 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。 MyISAM与InnoDB的区别是什么? 1、 存储结构 MyISAM :每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB :所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件)

MySQL存储引擎介绍

匿名 (未验证) 提交于 2019-12-02 22:06:11
mysql数据库常用的三种存储引擎:  数据库的存储引擎:5.6版本之后的默认为InnoDB存储,5.5版本之前的默认是MyISAM存储引擎 1.第一种myisam:三个文件 (1)表结构存文件、数据文件、搜索目录三个文件都存放在硬盘上 (2)应用于以读和插入为主的操作,很少的更新和删除 (2)不支持事务安全、不支持外键、不支持行级锁,表级锁严重影响并发 2.第二种innodb:两个文件 (1)表结构文件、数据和搜索目录文件都存放在硬盘上 (2)支持支持外键、支持行级锁、表级锁、事务安全确保事务的完整提交和回滚, (3) 3.第三种memory:两个文件 (1)表结构存储在硬盘,数据存储在内存,对表的大小有限制 (2)读写速度快,关机会导致内存数据的丢失,多用于热新闻 MyISAM和InnoDB区别 MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。 大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下。(如果你不介意 MyISAM 崩溃回复问题的话)

MySQL表锁和行锁

匿名 (未验证) 提交于 2019-12-02 21:59:42
锁粒度 MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的锁实现: InnoDB 存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 MyISAM 和 MEMORY 存储引擎采用的是表级锁(table-level locking) BDB 存储引擎采用的是页面锁(page-level locking),但也支持表级锁 默认情况下,表锁和行锁都是自动获得的, 不需要额外的命令。 但是在有的情况下, 用户需要明确地进行锁表或者进行事务的控制, 以便确保整个事务的完整性,这样就需要使用事务控制和锁定语句来完成。 不同粒度锁的比较 表级锁 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 存储引擎通过总是一次性同时获取所有需要的锁以及总是按相同的顺序获取表锁来避免死锁。 表级锁更适合于以查询为主,并发用户少,只有少量按索引条件更新数据的应用,如Web 应用 行级锁 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 最大程度的支持并发,同时也带来了最大的锁开销。 在 InnoDB 中,除单个 SQL 组成的事务外,锁是逐步获得的,这就决定了在 InnoDB 中发生死锁是可能的。 行级锁只在存储引擎层实现

mysql的索引,事务,引擎

匿名 (未验证) 提交于 2019-12-02 21:59:42
索引: 1、普通索引: create index 自定义索引名称 on 库名.表名(表中的字段); 如:create index student on aa.学生表(学号); 2、唯一性索引: create unique index 自定义索引名称 on 库名.表名(表中的字段); 如:create unique index tudent on aa.学生表(学号); 注:删除索引 DROP INDEX 索引名称 ON 表名 3、主键索引: create table 表名(字段1,字段2……,PRIMARY KEYS(前面的某个字段)); alter table 库名.表名 add PRIMARY KEYS(表的某个字段); 如:create table studentss(id int(4), name char(6),age int(4),PRIMARY KEY(id)); 如:alter table studentss add primary key(id) 注:主键索引和唯一性索引的区别是,唯一性索引可以允许有空值。 注: 删除主键 如果一个主键是自增长的,不能直接删除该列的主键索引, 应当先取消自增长,再删除主键特性 alter table 表名 drop primary key; 【如果这个主键是自增的,先取消自增长.】 具体方法如下: alter table