mysql 使用InnoDB 引擎时候的存储文件系统初探
来源:互联网 发布:cf刷枪软件免费版 编辑:程序博客网 时间:2024/06/08 04:39
- 新建立一个数据库时候
在mysql Server所在地址下的data目录下:
建立了ibdata1,用来记录InnoDb系统信息和数据库表数据和索引,为所有的表锁公用。
日志文件: ib_logfile1、ib_logfile2
mySql在其工作目录的data文件夹下:
建立一个新的名字为dbName的文件夹,并在里面创建了一个文件,db.opt, 文件的内容是数据库的定义信息
default-character-set=utf8default-collation=utf8_general_ci
- 在这个数据库中建立一张表,表名为user1.
CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) DEFAULT NULL, `money` double NOT NULL, `gender` tinyint(4) DEFAULT NULL, `varc` varchar(32) NOT NULL, `c32` char(32) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在dbName文件夹下增加了两个文件,user1.frm和user1.ibd;
- 然后通过插入数据来观察三个文件的大小变化:ibdata1,user1.frm和user1.ibd;
INSERT INTO user1 (name,age) VALUES ('name1',5);
插入1条数据:
146,800,640 字节
8,614 字节
98,304 字节
插入四条数据:
146,800,640 字节
8,614 字节
98,304 字节
插入几千条数据:
146,800,640 字节
8,614 字节
360,448 字节
我发现,360,448 - 98,304 = 1024*256 , 猜测user1.ibd这个东西是按照1KB定长来扩展的。
- 创建一个新的表
CREATE TABLE `user2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7047 DEFAULT CHARSET=utf8;
data文件下的ibdata1的大小不变为了146,800,640字节。
同时,在dbName文件夹下增加了两个文件,
user2.frm和user2.ibd;其初始大小分别为9kb(8,614 字节)和96kb(98,304 字节),与上面相同。
- 关于删除操作
删除前:146,800,640 字节,8,614 字节,180,224 字节
使用delete语句删除一千条数据在user2中。
DELETE FROM user2 where id BETWEEN 7000 and 7000+1000;
发现,user2.ibd不减反增加为(192K)196,608字节。
在user3表中,使用Delete语句不加where条件。
DELETE FROM user3 ;受影响的行: 2286时间: 0.082s
发现,user3.ibd不减反增加为(192K)196,608字节。
在user4中使用truncate,
TRUNCATE TABLE user4;
观察到,user4.ibd的大小回到的建表后插入数据之前的大小,98,304 字节。
在user5中使用drop操作,
DROP TABLE user5;
user5.frm和user5.ibd都消失了。
阅读全文
0 0
- mysql 使用InnoDB 引擎时候的存储文件系统初探
- InnoDB存储引擎 --mysql的存储引擎
- MySQL的存储引擎INNODB
- mysql不能使用innodb存储引擎
- MySQL InnoDB存储引擎
- MySQL存储引擎--InnoDB
- MySQL InnoDB存储引擎
- MySQL InnoDB存储引擎的参数详解
- mysql的Innodb存储引擎学习
- mysql的innodb存储引擎(一)
- mysql的innodb存储引擎(二)
- mysql的innodb存储引擎(三)
- mysql的innodb存储引擎(四)
- mysql修改数据库的存储引擎(InnoDB)
- MySQL的存储引擎InnoDB间隙锁
- MySQL InnoDB存储引擎下的锁
- mysql修改数据库的存储引擎(InnoDB)
- Mysql的存储引擎之:InnoDB存储引擎
- 附录
- 第9章 Spring Boot开发者工具
- vimのcopy和move的另一种方式
- 附录A 计算机的0和1
- 附录B 编程的本质
- mysql 使用InnoDB 引擎时候的存储文件系统初探
- 附录C Java编程简史
- 6.1 Spring Boot集成mybatis
- 6.2 Spring Boot集成jpa
- 6.3 Spring Boot集成mongodb开发
- kotlin学习笔记2
- hadoop实战随笔_0720
- springboot项目创建
- Android 关于“NetworkOnMainThreadException”出错提示的原因及解决办法