mysql之mysql数据在磁盘的储存方式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql之mysql数据在磁盘的储存方式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4085字,纯文字阅读大概需要6分钟。
内容图文
![mysql之mysql数据在磁盘的储存方式](/upload/InfoBanner/zyjiaocheng/454/59a65c44aaff49e4a412321e0d67a549.jpg)
mysql的数据在磁盘上的存储:
数据块:
由多个磁盘block组成的块,存储引擎负责管理数据块。
磁盘是block块设备,数据在磁盘上的存放也是按照块存放的。
mysql读取表到内存的时候,也必许按照一块一块的方式读取。假设要查询的表在和其他表在都在同一个块内。加载块的时候除了读取要查询的表,其他表也一并被读取出来。
当一个块内的部分表被删除时,这是就是形成了碎片。这样会降低装载到内存的速度。
所以会生成一个块头,记录一个快内表的大小,有无空闲空间,空闲空间的位置。
文件的记录组织类型:
堆文件组织:
把行简单的堆起来,没有顺序,记录可能在文件的任何地方。
查询效率低
顺序文件组织:
把行按照某字段(搜索码、排序码)的值顺序记录。
更新代价大。
散列文件组织:
人为将表分成多个部分,每个部分称为桶。根据行中的某个或某些字段做使用散列函数做哈希运算,运算结果属于某个范围的放在指定的桶中。多个桶组成一个表。
桶有可能溢出。所以要选定一个合适散列函数,让行平均在各个桶中。
表的组成:
表是由表定义和表数据组成的。和block=inode+data类似。
表定义:表的结构,字段类型和长度等。
表数据:字段的属性值。
表空间(table space):
用于实现将多个表的数据组织在一个数据文件中的一个逻辑管理组件。是一种高级的空间管理器。有点类似于逻辑卷。
数据字典(data directory):
各种关系的元数据。
关系的名字
字段名称
字段类型和长度
视图
完整性约束
用户的名字
权限
用户的密码
...
mysql的数据储存:
MyISAM:
*.frm 表结构定义文件
*.MYD 表数据文件
*.MYI 表索引文件
InnoDB:
所有表共享一个表空间文件。即把众多表示数据文件放在一个文件内。这个文件叫做表空间文件。
建议分开存放。
修改后的文件:
*.frm 表结构定义文件
*.opt 选项文件。包含默认字符集和排序规则。
*.ibd 表空间(表数据和表索引)
方法如下:
mysql>SHOW VARIABLES LIEK ‘%innodb%‘; 查看和innodb相关的会话变量。
innodb_file _per_table OFF 默认是不启用。
#vim /etc/my.cnf
[mysqld]
innodb_file_per_table = 1
#systemctl reload mysqld
mysql>SHOW GLOBAL VARIABLES LIEK ‘%innodb%‘; 查看innodb的全局变量。
mysql初始化后,默认mysql数据库的格式是MyISAM。其他的数据库的格式取决于默认设置
查看mysql支持的存储引擎:
mysql>SHOW ENGINES;
表头行中:
Engine 引擎名称
Suuport YSE表示支持,DEFAULT表示为默认引擎
Commnet 描述信息
Transaction 是否支持事务
XA 是否支持分布式事务
Savepoint 是否支持保存点,支持事务的引擎才支持保存点
查看表的状态信息:
mysql>SHOW TABLE STATUS [FROM|IN DBNAME] [LIKE ‘PATTERN’|WHERE EXPR]
例如:
mysql>USE mysql
mysql>SHOW TABLE STATUS LIKE ‘user‘ \G 查看mysql库中user表的状态信息
查看服务器支持的字符集:
mysql>SHOW CHARACTER SET;
查看服务器支持的排序规则:
mysql>SHOW COLLATION;
实例:
1.显示字符集和排序规则:
mysql>SHOW CHARACTER SET; 显示字符集
mysql>SHOW COLLATION; 显示排序规则
2.创建数据库,指定字符集为gbk,排序规则为gbk_chinese_ci
mysql>CREATE DATABASE IF NOT EXISTS test CHARACTER SET ‘gbk‘ COLLATE ‘gbk_chinese_ci‘;
或
mysql>CREATE SCHEMA IF NOT EXISTS test CHARACTER SET ‘gbk‘ COLLATE ‘gbk_chinese_ci‘;
3.删除数据库:
mysql>DROP DATABASE test;
4.数据库重命名:
一般情况下,数据库是不能重命名的,以下方法也不建议使用。
思路:数据库本质上也是几个文件的组成,只要修改文件的文件名即可变相的改变数据库的名字。
#mysqladmin shutdown
#cd $DATA_DIR
#mv test.* abc.*
#service mysqld start
5.向courses表中插入数据:
mysql>INSERT INTO courses (CourName) values (‘httpd‘),(‘dns‘),(‘mysql‘);
mysql>SELECT * FROM courses; 查看表的数据
mysql>SHOW INDEXES FROM courses; 查看表的索引
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1679322
mysql之mysql数据在磁盘的储存方式
标签:mysql 数据存储 表空间 表
本文系统来源:http://ggvylf.blog.51cto.com/784661/1679322
内容总结
以上是互联网集市为您收集整理的mysql之mysql数据在磁盘的储存方式全部内容,希望文章能够帮你解决mysql之mysql数据在磁盘的储存方式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。