14.6.1 Creating InnoDB Tables 创建InnoDB 表:
14.6.1 Creating InnoDB Tables 创建InnoDB 表: 创建一个InnoDB 表,使用CREATE TABLE 语句,你不需要指定 ENGINE=InnoDB子句 如果InnoDB 定义为默认的存储引擎, 在MySQL 5.5是默认的版本。 你仍旧可以使用ENGINE=InnoDB 子句如果你计划使用mysqldump或者复制来replay CREATE TABLE 语句在一个服务器上,默认的存储引擎不是InnoDB. -- Default storage engine = InnoDB.
CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a));
-- Backward-compatible with older MySQL.
CREATE TABLE t2 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB; 一个InnoDB 表和它的索引可以被创建在系统表空间或者在一个单独的file-per-table tablespace. 当 innodb_file_per_table 被启用, 在MySQL 5.6.6是默认设置, 一个InnoDB 表是隐含创建在一个单独的file-per-table tablespace. 相反, 当 innodb_file_per_table 被禁用,一个InnoDB 表是隐式的创建在system tablespace. 当你创建一个InnoDB 表, MySQL 创建一个.frm 文件在数据库目录在MySQL 数据目录下。 一个表创建在file-per-table tablespace, 一个.ibd文件也会被创建。 [root@wx03 DEVOPS]# ls -ltr machine_info.*
-rw-rw---- 1 mysql mysql 8640 May 6 15:21 machine_info.frm
-rw-rw---- 1 mysql mysql 114688 May 6 15:21 machine_info.ibd 一个表创建在system tablespace 是创建在存在的系统表空间ibdata 文件里。 ibd是MySQL数据文件、索引文件,无法直接读取。
frm是表结构文件,可以直接打开。 在内部,InnoDB 增加一个条目对于每个表在InnoDB 数据目录。 条目包含数据库名字。比如, 如果table t1创建在test 数据库, 数据目录条目是'test/t1'. 这意味着你能创建一个相同名字的表在不同的数据库, 表名字在InnoDB里不冲突 查看InnoDB 表的属性: mysql> SHOW TABLE STATUS FROM test LIKE 't%' \G;
*************************** 1. row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 0
Avg_row_length: 0
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2015-03-16 16:26:52
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec) 在状态输出下,你可以看到表t1的Row 格式属性 Row_format: Compact mysql> SHOW TABLE STATUS FROM zjzc LIKE 'Client' \G;
*************************** 1. row ***************************
Name: Client
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 13013
Avg_row_length: 444
Data_length: 5783552
Max_data_length: 0
Index_length: 3588096
Data_free: 4194304
Auto_increment: 13538
Create_time: 2016-06-16 18:28:54
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment: 用户表 1 row in set (0.00 sec) ERROR:
No query specified 尽管设置是好的对于基本的实验,考虑使用动态的或者压缩的行格式来利用InnoDB 功能 比如表压缩和关闭页面存储对于长的列。 使用那些行格式需要启用innodb_file_per_table mysql> show variables like '%innodb_file_format%';
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
+--------------------------+----------+
3 rows in set (0.00 sec) InnoDB 表的属性可以被查询使用InnODB 信息Schema system tables: mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME='zjzc/Client' \G
*************************** 1. row ***************************
TABLE_ID: 4533
NAME: zjzc/Client
FLAG: 1
N_COLS: 25
SPACE: 4519
FILE_FORMAT: Antelope
ROW_FORMAT: Compact
ZIP_PAGE_SIZE: 0
1 row in set (0.01 sec) 定义主键: 总是设置一个主键对于每个InnoDB表, 指定一列或者多列: 1. 涉及最重要的查询 2.永远不会空的 3.不会有重复值 4. 很少改变插入的值 例如, 一个表包含信息关于people, 你不会创建一个主键在(firstname,lastname) 因为不止一个人有相同的名字, 有些人 最后名字是空的, 有些人会改变它们的名字。 有这么多的束缚,通常没有一个列来作为主键, 因此你需要创建一个数字ID列来作为主键或者主键的一部分。 你可以定义一个自动增长列,递增的值会自动天出作为记录插入 尽管表工作正常在没有定义主键, 主键是设计许多方面的性能,对于大表和经常访问的表是重要的。 推荐你总是指定一个primary key 在CREATE TABLE语句。 如果你创建表,load data,运行 ALTER TABLE 来增加主键
14.6.1 Creating InnoDB Tables 创建InnoDB 表:的更多相关文章
- 14.8.1 Creating InnoDB Tables 创建InnoDB 表
14.8.1 Creating InnoDB Tables 创建InnoDB 表 创建一个InnoDB表,使用CREATE TABLE 语句,你不需要指定ENGINE=InnoDB 子句 如果Inno ...
- 14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器
14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器 这个章节描述技术关于移动或者复制一些或者所 ...
- 14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构
14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构 一个InnoDB 表的物理行结构取决于在创建表指定的行格式 默认, Inno ...
- 14.6.7?Limits on InnoDB Tables InnoDB 表的限制
14.6.7?Limits on InnoDB Tables InnoDB 表的限制 警告: 不要把MySQL system tables 从MyISAM 到InnoDB 表. 这是不支持的操作,如果 ...
- 14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器
14.6.2 Moving or Copying InnoDB Tables to Another Machine 移动或者copy InnoDB 表到另外的机器 这个章节描述技术关于移动或者copy ...
- 14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用
14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用 Vsftp:/data01/mysql/zjzc# ls -lt ...
- 14.2.5.1 Role of the .frm File for InnoDB Tables InnoDB .frm文件的作用
14.2.5.1 Role of the .frm File for InnoDB Tables: 14.2.5.1 Role of the .frm File for InnoDB Tables I ...
- 14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小
14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小 这个章节描述如何增加或者减少 InnoDB 系统表空间的大小 增加InnoDB ...
- 14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB
14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB 14.6.11.1 Configuring Persisten ...
随机推荐
- poj1887 Testing the CATCHER
Testing the CATCHER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5 ...
- 常用位操作,写8位 12864串口模式 I2C 1302 18B20
/*以1302为例*/ void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数) { unsigned char i; ACC ...
- Linux看门狗脚本 1.4
近期项目的看门狗经历了三个版本号. 第一个版本号: 用ps -ef,假设程序挂了就启动 第二个版本号: 程序因为执行时会出现不再监听7901port,所以不能简单推断机器是不是挂了,而是推断此port ...
- 在C++中使用C#编写的类2
在那篇<在C#中使用C++编写的类>中我介绍了如何在C#中使用C++编写的类.可是由于C#在用户界面设计.数据库存储和XML文件读取等方面的优势,有时候也会出现要在C++中使用C#编写的类 ...
- DotNet命名规范参考(转)
来自:http://www.cnblogs.com/w-y-f/archive/2012/05/30/2526254.html DotNet命名规范参考 一.命名规范 注意事项:使用英文命名规则,尽量 ...
- 15-UIKit(view布局、Autoresizing)
目录: 1. 纯代码布局 2. 在View中进行代码布局 3. Autoresizing 回到顶部 1. 纯代码布局 纯代码布局分VC下和V下 [MX1-layout-code] 在VC下覆盖view ...
- 2016年会成为Java EE微服务年吗?
原文 http://www.infoq.com/cn/news/2016/02/javaee-microservices 进入2016年时间还不是很长,让我们回顾下去年年底的一个预言.去年12月,来 ...
- KVM虚拟机介绍
一 KVM虚拟机简介 kernel-based Virtual Machine的简称,是一个开源的 系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux ...
- 利用内容提供者插入sms(装B程序)
1.sms的权限配置 <uses-permission android:name="android.permission.READ_SMS"/> <uses-pe ...
- Javascript 生成指定范围数值随机数
JavaScript对随机数的介绍比较少,所以今天分享一下有关随机数的一些事儿.希望能对大家有点小帮助. 主要的公式就是parseInt(Math.random()*(上限-下限+1)+下限); Ma ...