当前位置: 代码迷 >> 综合 >> 08nosql mysql 优化第一天 - innodb存储引擎
  详细解决方案

08nosql mysql 优化第一天 - innodb存储引擎

热度:98   发布时间:2023-10-10 23:20:19.0

2、innodb存储引擎

>=5.5 版本中默认的存储引擎,MySql推荐使用的存储引擎。提供事务,行级锁定,存储引擎。

事务安全型存储引擎,更加注重数据的完整性和安全性。

(1)存储格式:

innodb存储引擎  每个数据表有单独的“结构文件”  *.frm

数据索引集中存储,存储于同一个表空间文件ibdata1

ibdata1就是InnoDB表的共享存储空间,默认innodb所有表的数据都在一个ibdata1里。

创建innodb表后,存在文件如下:

create table t1(id int,name varchar(32)) engine innodb charset utf8;

 08nosql mysql 优化第一天 - innodb存储引擎

.frm表结构文件。

08nosql mysql 优化第一天 - innodb存储引擎

innodb表空间文件:存储innodb的数据和索引。

ibdata1

 08nosql mysql 优化第一天 - innodb存储引擎

默认,所有的 innodb表的数据索引在同一个表空间文件中,

通过配置可以达到每个innodb的表对应一个表空间文件。

show  variables   like 'innodb_file_per_table%'

08nosql mysql 优化第一天 - innodb存储引擎

开启该配置:

set  global  innodb_file_per_table=1;

08nosql mysql 优化第一天 - innodb存储引擎

创建一个innodbd的表进行测试使用。

08nosql mysql 优化第一天 - innodb存储引擎

查看表对应的文件自己独立的“数据/索引”文件

08nosql mysql 优化第一天 - innodb存储引擎

系统配置参数innodb_file_per_table后期无论发生任何变化,t2都有自己独立的“数据/索引”文件。

注意:相比较之下,使用独占表空间的效率以及性能会更高一点。

注意:innodb数据表不能直接进行文件的复制/粘贴进行备份还原,可以使用如下指令:

 

备份数据库的指令

> mysqldump  -uroot -p密码  数据库名字 > f:/文件名称.sql  [备份]

08nosql mysql 优化第一天 - innodb存储引擎

08nosql mysql 优化第一天 - innodb存储引擎

> mysql -uroot  -p密码 数据库   <  f:/文件名称.sql  [还原] 

08nosql mysql 优化第一天 - innodb存储引擎

(2)数据是按照主键顺序存储。

该innodb数据表,数据的写入顺序存储的顺序不一致,需要按照主键的顺序把记录摆放到对应的位置上去,速度比Myisam的要稍慢

create table t3(

id int primary key auto_increment,

name varchar(32) not null

)engine innodb charset utf8;

insert into t3 values(223,'刘备'),(12,'张飞'),(162,'张聊'),(1892,'网飞');

给innodb数据表写入4条记录信息(主键id值顺序不同)

插入时做排序工作,效率低。

 08nosql mysql 优化第一天 - innodb存储引擎

(3)并发处理:

擅长处理并发的。

行级锁定(row-level locking),实现了行级锁定,在一定情况下,可以选择行级锁来提升并发性,也支持表级锁定,innodb根据操作选择。

锁机制:

当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能相互影响),通过加锁来处理。

操作方面:

读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是所有人都只可以读,只有释放锁之后才可以写。

写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,只有锁表的客户可以操作(读写)这个表,其他客户读都不能读。

办公室开会锁上门。

锁定粒度(范围)

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam和innodb都支持。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb支持

  相关解决方案