admin管理员组文章数量:1582026
目录:
- 数据库
- 什么是数据库?
- RDBMS 术语
- MySQL数据库的介绍
- MySQL数据库的特点:
- 五大常用数据库引擎
- Innodb与MyIASM引擎的区别与应用场景
- 为什么MyIASM会比Innodb 的查询速度快
- 应用场景
数据库
关系型数据库:
最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
- 易于维护:都是使用表结构,格式一致
- 使用方便:SQL语言通用,可用于复杂查询
- 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询
缺点:
- 读写性能比较差,尤其是海量数据的高效率读写
- 固定的表结构,灵活度稍欠
- 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
非关系型数据库:
严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
- 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型
- 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘
- 高扩展性
- 成本低:nosql数据库部署简单,基本都是开源软件
缺点:
- 不提供sql支持,学习和使用成本较高
- 无事务处理
- 数据结构相对复杂,复杂查询方面稍欠
什么是数据库?
- 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API(接口)用于创建,访问,管理,搜索和复制所保存的数据
- 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量
- 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
- RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
> 1)数据以表格的形式出现
> 2)每行为各种记录名称
> 3)每列为记录名称所对应的数据域
> 4)许多的行和列组成一张表单
> 5)若干的表单组成database
RDBMS 术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
- 数据库: 数据库是一些关联表的集合。.
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余可以使系统速度更快。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
MySQL数据库的介绍
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
- 关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
MySQL数据库的特点:
-
Mysql是开源的,所以不需要支付额外的费用
-
Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库
-
MySQL使用标准的SQL数据语言形式
-
MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB
-
Mysql是可以定制的,采用了GPL协议,可以修改源码来开发自己的Mysql系统
五大常用数据库引擎
一:MyISAM:
创建一个myisam存储引擎的表的时候会出现三个文件
1.tb_demo.frm,存储表定义; 2.tb_demo.MYD,存储数据; 3.tb_demo.MYI,存储索引。
因为MyISAM表有无法处理事务,所以它只适合在以下情况下使用
- 选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
- 插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。
二:InnoDB:
- 更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
- 事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
- 自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
- 外键约束。MySQL支持外键的存储引擎只有InnoDB。
- 支持自动增加列AUTO_INCREMENT属性。
Innodb与MyIASM引擎的区别与应用场景
1. Innodb与MyIASM引擎的区别
(1)事务处理:
MyIASM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理);
(2)锁机制不同:
MyIASM是表级锁,而InnoDB是行级锁;
(3)select ,update ,insert ,delete 操作:
- MyIASM:如果执行大量的SELECT,MyISAM是更好的选择。
- InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。
- MySQL表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。
- InnoDB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁!
(4)查询表的行数不同:
MyIASM:select count() from table, MyISAM只要简单的读出保存好的行数,注意的是,当count()语句包含 where条件时,两种表的操作是一样的。
InnoDB : InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。
MyISAM存储表的总行数;InnoDB不存储总行数;
MyISAM采用非聚集索引,B+树叶子存储指向数据文件的指针。InnoDB主键索引采用聚集索引,B+树叶子存储数据
(5)外键支持:
mysiam表不支持外键,而InnoDB支持。
为什么MyIASM会比Innodb 的查询速度快
INNODB在做SELECT的时候,要维护的东西比MyIASM引擎多很多;
- 数据块,INNODB要缓存,MyIASM只缓存索引块, 这中间还有换进换出的减少;
- innodb寻址要映射到块,再到行,MyIASM记录的直接是文件的OFFSET,定位比INNODB要快;
- INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护。
MVCC ( Multi-Version Concurrency Control )多版本并发控制 。
应用场景
MyIASM适合:
- (1)做很多count 的计算;
- (2)插入不频繁,查询非常频繁;
- (3)没有事务
InnoDB适合:
- 可靠性要求比较高,或者要求事务;
- 表更新和查询都相当的频繁,并且行锁定的机会比较大的情况。
三:Memory:
使用MEMORY引擎主要是因为速度,好处就在MEMORY采用的逻辑存储是系统内存,极大的提高了储存数据表的性能; 坏处就是当mysql守护进程崩溃时,所有的Memory数据都会丢失。
一般在以下几种情况下使用Memory存储引擎:
- 目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。
- 如果数据是临时的,而且必须立即使用,那么就可以存放在内存表中。
- 存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。
四:MERGE /mɜːdʒ/ :
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,所以就相当于一个集合器。比起其他储存引擎MERGE不是很优秀,但是在某些情况下MERGE还是非常的有用。
Merge存储引擎的使用场景:
- 对于服务器日志这种信息,一般常用的存储策略是将数据分成很多表,每个名称与特定的时间端相关。
例如:可以用12个相同的表来存储服务器日志数据,每个表用对应各个月份的名字来命名。当有必要基于所有12个日志表的数据来生成报表,这意味着需要编写并更新多表查询,以反映这些表中的信息。与其编写这些可能出现错误的查询,不如将这些表合并起来使用一条查询,之后再删除Merge表,而不影响原来的数据,删除Merge表只是删除Merge表的定义,对内部的表没有任何影响。
五:ARCHIVE /'ɑ:kaiv/ :
Archive是归档的意思,在归档之后很多的高级功能就不再支持了,仅仅支持最基本的插入和查询两种功能
在MySQL 5.5版以前,Archive是不支持索引,但是在MySQL 5.5以后的版本就开始支持索引了。Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用。
版权声明:本文标题:Mysql数据库&五大常用数据引擎 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726552887a1075193.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论