#什么事MySQL数据库? 一般意义上,数据库也就是数据的集合,具体到计算机上数据库能够是存储器上一些文件的集合或者一些内存数据的集合。 咱们常说的MySQL数据库,sql server数据库等实际上是数据库管理系统,它们能够存储数据,并提供查询和更新数据库中的数据的功能等等。根据数据库如何存储数据和如何操做数据的实现机制不一样,这些数据库之间既有区别又有共同点。 MySQL数据库是开放源代码的关系型数据库。目前,它提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。 同oracle和sql server等大型数据库系统同样,MySQL也是客户/服务器西宫,而且是单进程多线程架构的数据库。 MySQL的区别在于其它的数据库系统的一个重要特色是支持插入式存储引擎。mysql
存储引擎说白了就是如何存储数据、如何为存储的数据创建索引和如何更新、查询数据等技术的实现方法。由于在关系型数据库中,数据的存储是以表的形式存储的,因此存储引擎也能够称为表类型(即存储和操做此表的类型)。 在oracle和sql server等数据库中,只有一种存储引擎,全部的数据存储管理机制都是同样的。而MySQL数据库提供了多种存储引擎。用户能够根据不一样的需求为数据表选择不一样的存储引擎,用户也能够根据本身的须要编写本身的存储引擎。 #MySQL有哪些存储引擎? 进入MySQL的客户端时,执行命令 show engines,既能够看到MySQL支持的存储引擎类型. 以下图:sql
修改默认存储引擎:数据库
default_storage_engine = InnoDB安全
详解几种经常使用的MySQL存储引擎类型:服务器
支持全文索引多线程
支持压缩:用于实现数据仓库,能节约存储空间并提高性能架构
支持空间索引oracle
支持表级锁:若读写操做比例为9:1或8:2,则使用MyISAM能够提升性能性能
延迟更新索引:减小IO压力开放源代码
不支持事务,外键,MVCC,行级锁等
崩溃后没法安全恢复数据
适用场景:多读少写的数据,较小的表,可以容忍崩溃后的修改操做和数据丢失; 如自带的mysql数据库中的表都是使用MyISAM存储引擎的
建议:使用InnoDB存储引擎,并使用read commited的隔离级别,性能并不比MyISAM性能差,故推荐使用InnoDB存储引擎
支持事务:事务日志;日志文件大小一致:如ib_logfile0和ib_logfile1
支持外键
支持MVCC
支持聚簇索引
支持行级锁:即间隙锁
支持辅助索引
支持自适应hash索引
支持热备份
不支持全文索引
仅支持insert和select
支持很好的压缩功能
不支持事务,不能很好的支持索引
适用于:存储日志信息,或其它按时间序列实现的数据采集类的应用,如监控日志
将数据存储为csv格式,不支持索引
仅适用于数据交换场景
没有存储机制,任何发往此引擎的数据都会丢弃
因为其会记录二进制日志,故经常使用于多级复制架构中做中转服务器
数据保存在内存中,便是一个内存表
仅支持hash索引,使用表级锁
不支持blob和text数据类型
经常使用于保存中间数据,如周期性的聚合数据等;也用于实现临时表
是MyISAM的一个变种,可以将多个MyISAM表合并为一个虚表
属于传统的存储引擎,通常不经常使用
为肯定你的MySQL服务器能够用哪些存储引擎,执行以下命令: show engines;
选择标准能够分为:
(1)是否须要支持事务;
(2)是否须要使用热备;
(3)崩溃恢复:可否接受崩溃;
(4)是否须要外键支持;
而后按照标准,选择对应的存储引擎便可。