mysql的表空间怎么看 mysql表空间和oracle表空间

MYSQL实战优化——数据页、表空间

经过前面的介绍现在我们都知道,一行一行的数据是存放在数据页里的,所以接下来我们该分析一下数据页的结构了。之前介绍过,每个数据页,实际上是默认有16kb的大小,那么这16kb的大小就是存放大量的数据行吗?明显不是的,其实一个数据页拆分成了很多个部分,大体上来说包含: 文件头、数据页头,最小记录和最大记录、多个数据行、空闲空间、数据页目录、文件尾部。下面我们来看一张图:

成都创新互联公司是一家专业提供新兴企业网站建设,专注与网站建设、做网站、H5建站、小程序制作等业务。10年已为新兴众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

简单来说,就是平时我们创建的那些表,其实都有一个表空间的概念,在磁盘上都会对应着“表名.ibd”这样的一个磁盘数据文件。所以在物理层面,表空间就是对应一些磁盘上的数据文件。有的表空间,比如系统表空间可能对应的是多个磁盘文件,我们自己创建的表对应的表空间可能就是对应了一个“表名.ibd”数据文件。

在表空间的磁盘文件里会有很多的数据页,但是如果一个表空间包含了太多数据页的话就不便于管理,所以在表空间里又引入了一个 的概念,英文就是extent,一个数据区对应着连续的64个数据页,每个数据页是16kb,所以一个数据区是1mb,然后256个数据区被划分为一组。

对于表空间而言,它的第一组数据区的第一个数据区的前3个数据页都是固定的,里面存放了一些描述性的数据。比如fsp_hdr这个数据页,它里面就存放了表空间和这一组数据区的一些属性。ibuf_bitmap数据页,里面存放的是这一组数据页的所有insert buffer的一些信息。inode数据页,这里也存放了一些特殊信息。

我们现在先不去具体了解它们是干什么的,只要知道第一组数据区的第一个数据区的前3个数据页,都是存放一些特殊信息的。然后这个表空间里的其它各组数据区,每一组数据区的第一个数据区的头两个数据页都是存放特殊信息的,比如xdes数据页就是用来存放这一组数据区的一些相关属性的,其实就是很多描述这组数据区的东西。下面我们通过一张图来看一下表空间的存储结构。

1、linux操作系统的存储系统软件层原理分析以及IO调度优化原理

简单来说,linux的存储系统分为 VFS层、文件系统层,Page Cache缓存层,通用Block层、IO调度层、Block设备驱动层、Block设备层 ,如下图:

最后IO完成调度之后,就会决定哪个IO请求先执行,哪个IO请求后执行,此时可以执行的IO请求就会交给Block设备驱动层,最后经过驱动把IO请求发送给真正的存储硬件,也就是Block设备层。硬件设备完成IO读写操作,最后就把响应经过上面的层级反向依次返回,最终MySQL可以得到本次IO读写操作的结果。

mysql 表空间及索引的查看方法

1.查看索引

(1)单位是GB

SELECT

CONCAT(ROUND(SUM(index_length)/(1024*1024*1024),

2),

'

GB')

AS

'Total

Index

Size'

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

'database';

+------------------+

|

Total

Index

Size

|

+------------------+

|

1.70

GB

|

+------------------+

(2)单位是MB

SELECT

CONCAT(ROUND(SUM(index_length)/(1024*1024),

2),

'

MB')

AS

'Total

Index

Size'

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

'database';

其中“database”为你所要查看的数据库

2.查看表空间

SELECT

CONCAT(ROUND(SUM(data_length)/(1024*1024*1024),

2),

'

GB')

AS

'Total

Data

Size'

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

'database';

+-----------------+

|

Total

Data

Size

|

+-----------------+

|

3.01

GB

|

+-----------------+

3.查看数据库中所有表的信息

SELECT

CONCAT(table_schema,'.',table_name)

AS

'Table

Name',

CONCAT(ROUND(table_rows/1000000,2),'M')

AS

'Number

of

Rows',

CONCAT(ROUND(data_length/(1024*1024*1024),2),'G')

AS

'Data

Size',

CONCAT(ROUND(index_length/(1024*1024*1024),2),'G')

AS

'Index

Size'

,

CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),2),'G')

AS'Total'FROM

information_schema.TABLES

WHERE

table_schema

LIKE

'database';

linux系统中mysql数据库怎么查看表空间

linux系统进入mysql数据库的方法:

连接MYSQL:

格式: mysql -h主机地址 -u用户名 -p用户密码

1、连接到本机上的MYSQL。

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql

2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)

一个建库和建表以及插入数据的实例:

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key, //id设置为主关键字,并自动设值,也就是添加的时候,你不必向ID字段写内容

name char(10) not null,

address varchar(50) default '深圳', //设置默值为深圳

year date

); //建表结束

//以下为插入字段

insert into teacher values('','glchengang','建平一中','1976-10-10'); //ID不用写内容

insert into teacher values('','jack','建平一中','1975-12-23');

如何查看数据库的默认表空间,与临时表空间

select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看

2、缩小临时表空间大小

alter database tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF' resize 100M;

3、扩展临时表空间:

方法一、增大临时文件大小:

SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;

方法二、将临时数据文件设为自动扩展:

SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;

方法三、向临时表空间中添加数据文件:

SQL alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;

4、创建临时表空间:

SQL create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf’ size 10M;

5、更改系统的默认临时表空间:

--查询默认临时表空间

select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

--修改默认临时表空间

alter database default temporary tablespace temp1;

所有用户的默认临时表空间都将切换为新的临时表空间:

select username,temporary_tablespace,default_ from dba_users;

--更改某一用户的临时表空间:

alter user scott temporary tablespace temp;

6、删除临时表空间

删除临时表空间的一个数据文件:

SQL alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ drop;

删除临时表空间(彻底删除):

SQL drop tablespace temp1 including contents and datafiles cascade constraints;

7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)

GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小

dba_temp_files视图的bytes字段记录的是临时表空间的总大小

SELECT temp_used.tablespace_name,

total - used as "Free",

total as "Total",

round(nvl(total - used, 0) * 100 / total, 3) "Free percent"

FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used

FROM GV_$TEMP_SPACE_HEADER

GROUP BY tablespace_name) temp_used,

(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total

FROM dba_temp_files

GROUP BY tablespace_name) temp_total

WHERE temp_used.tablespace_name = temp_total.tablespace_name

ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;

希望能帮到您!

怎么通过SQL语句查看MySQL数据库的表空间状态

1.

查看数据库的索引空间大小

在MySQL

Workbench中运行以下SQL语句:

以GB为单位

SELECT

CONCAT(ROUND(SUM(index_length)/(1024*1024*1024),

6),

GB’)

AS

‘Total

Index

Size’

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

‘database’;

以MB为单位

SELECT

CONCAT(ROUND(SUM(index_length)/(1024*1024),

6),

MB’)

AS

‘Total

Index

Size’

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:

2.

查看数据库的数据空间大小

在MySQL

Workbench中运行以下SQL语句:

以GB为单位

SELECT

CONCAT(ROUND(SUM(data_length)/(1024*1024*1024),

6),

GB’)

AS

‘Total

Data

Size’

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

‘database’;

以MB为单位

SELECT

CONCAT(ROUND(SUM(data_length)/(1024*1024),

6),

MB’)

AS

‘Total

Data

Size’

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:

3.

查看数据库中所有表的信息

在MySQL

Workbench中运行以下SQL语句,查看数据库中所有表的表名、表行数、数据空间大小、索引空间大小和总大小:

SELECT

CONCAT(table_schema,’.’,table_name)

AS

‘Table

Name’,

table_rows

AS

‘Number

of

Rows’,

CONCAT(ROUND(data_length/(1024*1024),6),’

MB’)

AS

‘Data

Size’,

CONCAT(ROUND(index_length/(1024*1024),6),’

MB’)

AS

‘Index

Size’,

CONCAT(ROUND((data_length+index_length)/(1024*1024),6),’

MB’)

AS’Total

Size’

FROM

information_schema.TABLES

WHERE

table_schema

LIKE

‘database’;

其中,database是待查看数据库的名称,例如:lsqdb%。


分享题目:mysql的表空间怎么看 mysql表空间和oracle表空间
URL地址:http://cdiso.cn/article/hhgjde.html

其他资讯