iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中的表和区举例分析
  • 450
分享到

MySQL中的表和区举例分析

2024-04-02 19:04:59 450人浏览 八月长安
摘要

本篇内容主要讲解“Mysql中的表和区举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中的表和区举例分析”吧! My

本篇内容主要讲解“Mysql中的表和区举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql中的表和区举例分析”吧!

Mysql中的区
无论何种情况,区的大小总是1M,但是刚建表表分配的比较少。
1.创建一个数据库
mysql> create database vastdata;
Query OK, 1 row affected (0.01 sec)
2.使用这个数据库
mysql> use vastdata
Database changed
3.创建一张表
mysql> create table t1 (col1 int not null auto_increment,col2 varchar(7000),primary key(col1))engine=InnoDB;
Query OK, 0 rows affected (0.01 sec)
4.插入两条数据 其中repeat('a',7000)为将a连续7000次,也就是7000个a。所以我们将一条记录视为7K大小。
在MySQL中一个数据页的大小是16KB,所以两条记录就会占用一个页
mysql> insert t1 select null,repeat('a',7000);
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> insert t1 select null,repeat('a',7000);
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
5.查看t1表所对应的数据文件大小
mysql> system ls -lh /data/mydb/vastdata/t1.ibd
-rw-rw---- 1 mysql mysql 96K Oct 17 01:09 /data/mydb/vastdata/t1.ibd
6.使用py_innodb_page_info.py工具查看数据文件中页的分布
[root@vast python]# Python py_innodb_page_info.py -v /data/mydb/vastdata/t1.ibd 
page offset 00000000, page type   #系统的页
page offset 00000001, page type  #系统的页
page offset 00000002, page type  #系统的页
page offset 00000003, page type , page level <0000> #存放数据的页
page offset 00000000, page type  #空闲页
page offset 00000000, page type  #空闲页
Total number of page: 6:  #分配的页数
Freshly Allocated Page: 2  #空闲的页数
Insert Buffer Bitmap: 1     #系统中Insert Buffer Bitmap对应的页数
File Space Header: 1        #系统中File Space Header对应的页数
B-tree node: 1                #存放数据的页数
File Segment inode: 1     系统中File Segment inode对应的页数
7.查看当前t1对应的数据文件大小
-rw-rw---- 1 mysql mysql 96K Oct 17 01:09 /data/mydb/vastdata/t1.ibd
这里会发现,t1表大小只有96K,没有直接分配1M。
8.再次插入一行记录,大小约为7KB
mysql> insert t1 select null,repeat('a',7000);
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0
9.再次查看数据文件大小,依然为96K
mysql> system ls -lh /data/mydb/vastdata/t1.ibd
-rw-rw---- 1 mysql mysql 96K Oct 17 01:15 /data/mydb/vastdata/t1.ibd
10.查看一下当前此数据文件的内部页分布
[root@vast python]# python py_innodb_page_info.py -v /data/mydb/vastdata/t1.ibd 
page offset 00000000, page type
page offset 00000001, page type
page offset 00000002, page type
page offset 00000003, page type , page level <0001>
page offset 00000004, page type , page level <0000>
page offset 00000005, page type , page level <0000>
Total number of page: 6:
Insert Buffer Bitmap: 1
File Space Header: 1
B-tree Node: 3
File Segment inode: 1
我们可以的看到,空闲页没有了。其中00000004,00000005为存放数据块 00000003为根所对应的块。

11.创建一个存储过程,目的是简化插入。

mysql> delimiter //
mysql> create procedure load_t1(count INT UNSIGNED)
    -> begin
    -> declare s int unsigned default 1;
    -> declare c varchar(7000) default repeat('a',7000);
    -> while s <= count DO
    -> insert into t1 select NULL,c;
    -> set s = s+1;
    -> end while;
    -> end;
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
12.执行这个存储过程,60则表示在表中插入60行,每行都是7000个a

mysql> call load_t1(60);
Query OK, 1 row affected (0.06 sec)
13.查看表有多少行记录,可见为63行

mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|       63 |
+----------+
1 row in set (0.00 sec)
14.查看数据文件大小

mysql> system ls -lh /data/mydb/vastdata/t1.ibd
-rw-rw---- 1 mysql mysql 576K Oct 17 01:39 /data/mydb/vastdata/t1.ibd

63 * 7KB = 441KB 两行记录需要一个数据页,故这63行需要32个数据页
15.查看数据文件中页的分布,验证一下猜想
[root@vast python]# python py_innodb_page_info.py -v /data/mydb/vastdata/t1.ibd
page offset 00000000, page type <File Space Header>
page offset 00000001, page type <Insert Buffer Bitmap>
page offset 00000002, page type <File Segment inode>
page offset 00000003, page type <B-tree Node>, page level <0001>
page offset 00000004, page type <B-tree Node>, page level <0000>
page offset 00000005, page type <B-tree Node>, page level <0000>
page offset 00000006, page type <B-tree Node>, page level <0000>
page offset 00000007, page type <B-tree Node>, page level <0000>
page offset 00000008, page type <B-tree Node>, page level <0000>
page offset 00000009, page type <B-tree Node>, page level <0000>
page offset 0000000a, page type <B-tree Node>, page level <0000>
page offset 0000000b, page type <B-tree Node>, page level <0000>
page offset 0000000c, page type <B-tree Node>, page level <0000>
page offset 0000000d, page type <B-tree Node>, page level <0000>
page offset 0000000e, page type <B-tree Node>, page level <0000>
page offset 0000000f, page type <B-tree Node>, page level <0000>
page offset 00000010, page type <B-tree Node>, page level <0000>
page offset 00000011, page type <B-tree Node>, page level <0000>
page offset 00000012, page type <B-tree Node>, page level <0000>
page offset 00000013, page type <B-tree Node>, page level <0000>
page offset 00000014, page type <B-tree Node>, page level <0000>
page offset 00000015, page type <B-tree Node>, page level <0000>
page offset 00000016, page type <B-tree Node>, page level <0000>
page offset 00000017, page type <B-tree Node>, page level <0000>
page offset 00000018, page type <B-tree Node>, page level <0000>
page offset 00000019, page type <B-tree Node>, page level <0000>
page offset 0000001a, page type <B-tree Node>, page level <0000>
page offset 0000001b, page type <B-tree Node>, page level <0000>
page offset 0000001c, page type <B-tree Node>, page level <0000>
page offset 0000001d, page type <B-tree Node>, page level <0000>
page offset 0000001e, page type <B-tree Node>, page level <0000>
page offset 0000001f, page type <B-tree Node>, page level <0000>
page offset 00000020, page type <B-tree Node>, page level <0000>
page offset 00000021, page type <B-tree Node>, page level <0000>
page offset 00000022, page type <B-tree Node>, page level <0000>
page offset 00000023, page type <B-tree Node>, page level <0000>
Total number of page: 36:
Insert Buffer Bitmap: 1
File Space Header: 1
B-tree Node: 33
File Segment inode: 1
这里看到存放数据的数据页为33个,其中一个为根。32+1=33
16.在插入一行记录

mysql> call load_t1(1);
Query OK, 1 row affected (0.01 sec)
17.查看数据文件大小,发现这时,数据文件为2M

mysql> system ls -lh /data/mydb/vastdata/t1.ibd
-rw-rw---- 1 mysql mysql 2.0M Oct 17 01:50 /data/mydb/vastdata/t1.ibd
mysql>

18.查看数据文件中页的分布。
[root@vast python]# python py_innodb_page_info.py  /data/mydb/vastdata/t1.ibd
Total number of page: 128:
Freshly Allocated Page: 91
Insert Buffer Bitmap: 1
File Space Header: 1
B-tree Node: 34
File Segment inode: 1
可见这时,剩余91个空闲页。

到此,相信大家对“MySQL中的表和区举例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中的表和区举例分析

本文链接: https://www.lsjlt.com/news/66812.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
  • sql怎么用循环语句实现查询
    可以通过 do 和 while 语句创建循环,并在循环内执行查询,详细步骤包括:定义循环变量设置循环初始值循环执行查询更新循环变量执行查询循环退出条件 SQL 中使用循环语句实现查询 ...
    99+
    2024-05-14
  • sql怎么用代码修改表中数据
    通过 sql 代码修改表中数据的方法包括:修改单个记录:使用 update 语句设置列值并指定条件。修改多条记录:在 update 语句中指定多个条件来修改满足条件的所有记录。增加新列:...
    99+
    2024-05-14
  • sql怎么用命令创建数据库
    在 sql 中使用 create database 命令创建新数据库,其语法包含以下步骤:指定数据库名称。指定数据库文件和日志文件的位置(可选)。指定数据库大小、最大大小和文件增长(可选...
    99+
    2024-05-14
  • sql怎么用身份证提取年龄
    sql 中提取身份证号码中的年龄的方法:提取出生日期部分(身份证号码中第 7-14 位);使用 to_date 函数转换为日期格式;使用 extract 函数计算与当前日期之间的年差。 ...
    99+
    2024-05-14
  • sql怎么看字段长度
    有两种方法可查看 sql 中的字段长度:使用 information_schema 架构,其中包含元数据信息,可用于查询字段长度。使用内建函数,如 length(),其适用于字符串数据类...
    99+
    2024-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作