MySQL存储引擎基本

MySQL存储引擎基本

MySQL的常用引擎就是InnoDB主要提供的就是外键约束的存储引擎,他的优点就是对于事务的存储能力是其他引擎无法与之相比的,也是当前使用最广泛的存储引擎,InnoDB默认的锁粒度行级锁,并发性能比较好,但是有时可能会发生死锁的情况

所谓死锁:

是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。表级锁不会产生死锁.所以解决死锁主要还是针对于最常用的InnoDB。

常用存储引擎特点:

1)myisam存储引擎特点:

  • 支持表级锁,不支持事务,事务回滚,外键
  • myisam存储引擎的表,每个表对应三个表文件
  • 表名.frm,存储表头信息,mysql>desc 库.表
  • 表名.MYI,存储表索引信息,mysql>show index from 库.表

2 ) innoDB存储引擎特点

  • 支持行级,支持事务,事务回滚,外键
  • myisam,存储引擎的表,每个表对应3哥表文件
  • 表名.frm存储表头信息,mysql>desc 库.表

InnoDB是事务型数据库的首选引擎,支持失误安全表(ACID),支持行锁定和外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁

而我们常用的引擎就是InnoDB和MyISAM,但是引擎肯定不会只有这两个,例如还有NDB存储引擎,Memory存储引擎,Archive存储引擎等一些其他的存储引擎,他们都有自己使用的场景,这里再提一下Memory存储引擎,它是将数据存放再内存中的,如果数据库出现问题,那么表里的数据就会全部丢失,但是它会比较适合来存储一些临时数据,因为它是存储再在内存中的,所以说它的数据读取能力是非常快的,但是他的并发能力是很差的,但是使用的时候还是要进行考量是否适合自己要使用的场景。

那我们下面看一下如何再配置文件里面修改存储引擎

vim /etc/my.cnf
    [MySQl]
    default-storage-engines=myisam

那么我们怎么建表时候所使用的一些引擎呢

#mysql查看建表使用的引擎;
mysql>  show create table base(表名)
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                       |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| base  | CREATE TABLE `base` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `password` varchar(24) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

就会显示见表时候所指定的引擎,如果建表时候未指定就会默认使用InnoDB引擎,也可以去配置文件里进行更改

MySQL使用的默认引擎或者在创建表的时候去指定想要的默认引擎;

#例:创建一个指定引擎的表格;
#首先我们想要创建表格就需要先进行想要创建表格的库里,再利用create命令进行表格的创建;
mysql> create table day2(name char(8),age int(6)) engine = InnoDB;
Query OK, 0 rows affected (0.12 sec)
#可以看到我们在后面指定了引擎未InnoDB;
#可以再利用创建查看创建表格的过程的命令进行查看;
mysql> show create table day2\G
*************************** 1. row ***************************
       Table: day2
Create Table: CREATE TABLE `day2` (
  `name` char(8) DEFAULT NULL,
  `age` int(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

上面就是对于存储引擎一些基本操作,但是对于存储引擎里面的探究式还有很多需要挖掘,例如

对于锁的区别和对于使用场景,对于事务之类的东西,接下来我们就来进行一起的学习探究吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值