Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37297
  • 博文数量: 11
  • 博客积分: 83
  • 博客等级: 民兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-08 00:11
文章分类
文章存档

2012年(2)

2011年(9)

最近访客

分类:

2011-12-14 02:01:24

实验环境:
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  微博:
阅读(1290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~