Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101893
  • 博文数量: 16
  • 博客积分: 350
  • 博客等级: 一等列兵
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 09:06
文章分类

全部博文(16)

文章存档

2013年(4)

2012年(3)

2011年(9)

我的朋友

分类: Mysql/postgreSQL

2011-12-08 19:06:14

实验环境:
OS:Ubuntu 10.04
数据库版本:Mysql 5.5.18
安装路径 :/opt/mysql/
数据存放位置:/opt/mysql/data
配置文件位置:/opt/mysql/etc/my.cnf
实验内容:在用InnoDB创建表时,都会产生那些文件,这些文件存储的内容都是什么?
首先,确保Mysql的配置文件 my.cnf中[mysqld]配置组下存在innodb_file_per_table项
打开两个终端:一个cd大Mysql的数据目录下:
  1. cd /opt/mysql/data
另一个链接到mysql,用来创建表和插入数据
  1. /opt/mysql/bin/mysql -uroot
创建数据库innodb_test供测试用:
  1. mysql> create database innodb_test;
此时查看Mysql数据目录,多了一个innodb_test文件夹(mysql中每个数据库对应一个文件夹)
在innodb_test库中创建表t
  1. mysql> use innodb_test;
  2. Database changed
  3. mysql> create table t(id int auto_increment primary key,name char(20));
  4. Query OK, 0 rows affected (0.18 sec)
innodb_test文件夹下多了两个文件
t.frm(存放表结构的文件)   t.ibd(存放表数据的文件)
innodb存储引擎有两种存储表数据的方式,一种成为独享表空间,当my.cnf中存在innodb_file_per_table时,即为独享表空间,如以上实验所示。另一种称为共享表空间,my.cnf中存在innodb_file_per_table时,即为共享表空间。下面来实验以下共享表空间。
将my.cnf中的innodb_file_per_table注释掉
删除innodb_test库
  1. mysql> drop database innodb_test;
  2. Query OK, 1 row affected (0.06 sec)
重启mysql以便重新加载配置文件。
  1. root@liu-pc:/# /opt/mysql/init.d/mysql restart
链接mysql新建 innodb_test库
  1. root@liu-pc:/opt# mysql/bin/mysql -uroot
  2. mysql> create database innodb_test;
  3. Query OK, 1 row affected (0.00 sec)
在innodb_test中创建t表:
  1. mysql> use innodb_test;
  2. Database changed
  3. mysql> create table t(id int auto_increment primary key,name char(20));
  4. Query OK, 0 rows affected (0.18 sec)
此时查看Mysql数据目录,在innodb_test文件夹下只是多了t.frm 文件。
在使用共享表空间配置时,innodb存储引擎将数据存放在共享表文件中,不会为每个表创建单独的数据存储文件。

最近在深入学习mysql,打算向mysql dba方向发展。希望能够和志同道合的朋友共同进步,qq:244236866  
email:lpfvip2008@gmail.com  微博:
阅读(2510) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

布毫铯2011-12-14 02:02:04

学习了,感谢LZ分享!