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 ...
随机推荐
- WebView.destroy() called while still attached 的解决的方法
能够如今webView的父组件中删除该webview,然后再Destroy parent.removeView(webView); 然后 webView.removeAllViews(); webVi ...
- iOS9适配系列教程
链接地址:http://www.open-open.com/lib/view/open1443194127763.html 中文快速导航: iOS9网络适配_ATS:改用更安全的HTTPS(见Demo ...
- svn回滚版本2
svn 版本回滚 取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn ...
- Android 程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短信
使用SmsManager类,可以在自己编写的程序内部发送短信,而不需要调用系统的短信应用. 然而,有的时候调用系统内置的短信应用会更加方便. 这时,需要使用一个MIME类型为vnd.android-d ...
- [JBoss] JNDI与JBossNS
JNDI的作用 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface). 随着分布式应用的发展,远程访问对象访问成为常用的方法.虽然说通过Soc ...
- Java基础09 类数据与类方法
链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2988622.html 作者:Vamei 出处:http://www.cnblogs.com ...
- JAVA UTF-8字符转换为GBK
String t = "\u53d6"; try { String gbk=URLEncoder.encode(t,"GBK"); System.out.pri ...
- HTML5的优缺点是什么?
HTML5的优缺点是什么?作为HTML的第五次重大修改,HTML5有哪些改进?HTML5又有哪些缺点? 网络标准 HTML5本身是由W3C推荐出来的,它的开发是通过谷歌.苹果,诺基亚.中国移动等几百家 ...
- USACO inflate
全然背包,转化为0/1背包 dp[i, j] = max(dp[i-1, j], dp[i, j - minutes[i]] + points[i]) /* ID:kevin_s1 PROG:infl ...
- 几种经典的数据排序及其Java实现
选择排序 思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k ...