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 表:的更多相关文章

  1. 14.8.1 Creating InnoDB Tables 创建InnoDB 表

    14.8.1 Creating InnoDB Tables 创建InnoDB 表 创建一个InnoDB表,使用CREATE TABLE 语句,你不需要指定ENGINE=InnoDB 子句 如果Inno ...

  2. 14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器

    14.8.4 Moving or Copying InnoDB Tables to Another Machine 移动或者拷贝 InnoDB 表到另外机器 这个章节描述技术关于移动或者复制一些或者所 ...

  3. 14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构

    14.8.3 Physical Row Structure of InnoDB Tables InnoDB 表的物理行结构 一个InnoDB 表的物理行结构取决于在创建表指定的行格式 默认, Inno ...

  4. 14.6.7?Limits on InnoDB Tables InnoDB 表的限制

    14.6.7?Limits on InnoDB Tables InnoDB 表的限制 警告: 不要把MySQL system tables 从MyISAM 到InnoDB 表. 这是不支持的操作,如果 ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. 14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小

    14.7.1 Resizing the InnoDB System Tablespace InnoDB 系统表空间大小 这个章节描述如何增加或者减少 InnoDB 系统表空间的大小 增加InnoDB ...

  9. 14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB

    14.6.11 Configuring Optimizer Statistics for InnoDB 配置优化统计信息用于InnoDB 14.6.11.1 Configuring Persisten ...

随机推荐

  1. WIZnet推出串口转以太网模块WIZ550S2E

    WIZ550S2E 是一个网关模块,提供RS-232转TCP/IP协议功能.并可基于TCP/IP及以太网实现网络设备管理.远程測量,仅仅需用RS-232串口连接当前设备.换句话说,WIZ550S2E是 ...

  2. UVA 10340 (13.08.25)

    Problem E All in All Input: standard input Output: standard output Time Limit: 2 seconds Memory Limi ...

  3. Verilog之case语句

    verilog设计进阶 时间:2014年5月6日星期二 主要收获: 1.学会使用case语句: 2.学会使用随机函数$random. $random: 1.函数说明:$random函数调用时返回一个3 ...

  4. 在ibatis下匹配特殊手机号码(oracle数据库)

    <isNotNull prepend="AND" property="endNumber"> <isNotEmpty property=&qu ...

  5. .net嵌入c#代码(投票练习)

    .net嵌入c#代码(投票练习) <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...

  6. Java --CountDownLatch简介

    CountDownLatch 1.类介绍 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.用给定的计数 初始化 CountDownLatch.由于调用了 coun ...

  7. 基于visual Studio2013解决C语言竞赛题之1004平均值

     题目 解决代码及点评 /************************************************************************/ /* 4. 编一个程序, ...

  8. HDOJ 5088 Revenge of Nim II 位运算

    位运算.. .. Revenge of Nim II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  9. STM32 控制步进电机 28BYJ-48

    STM32 控制步进电机 28BYJ-48  http://blog.chinaunix.net/uid-12664992-id-300272.html 步进电机驱动最简化的逻辑: //四相八拍:A- ...

  10. Java基础09 类数据与类方法

    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2988622.html 作者:Vamei 出处:http://www.cnblogs.com ...