三 使用存储引擎

方法1:建表时指定引擎

指定innodb,不写默认也是innodb

use 数据库先

create table innodb_t1(id int,name char)engine=innodb;
create table innodb_t2(id int)engine=innodb;
show create table innodb_t1;
show create table innodb_t2;
mysql> create table innodb_t1(id int,name char)engine=innodb;
Query OK, 0 rows affected (0.11 sec) mysql> create table innodb_t2(id int)engine=innodb;
Query OK, 0 rows affected (0.02 sec) mysql> show create table innodb_t1;
+-----------+----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+----------------------------------------------------------------------------------------------------------------------------+
| innodb_t1 | CREATE TABLE `innodb_t1` (
`id` int(11) DEFAULT NULL,
`name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> show create table innodb_t1\G;
*************************** 1. row ***************************
Table: innodb_t1
Create Table: CREATE TABLE `innodb_t1` (
`id` int(11) DEFAULT NULL,
`name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec) mysql> show create table innodb_t2\G;
*************************** 1. row ***************************
Table: innodb_t2
Create Table: CREATE TABLE `innodb_t2` (
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

方法2:在配置文件中指定默认的存储引擎

/etc/my.cnf
[mysqld]
default-storage-engine=INNODB
innodb_file_per_table=1

查看

[root@mysql ~]# cd /var/lib/mysql/db1/
[root@mysql db1]# ll
总用量 48
-rw-rw----. 1 mysql mysql 61 10月 6 03:50 db.opt
-rw-rw----. 1 mysql mysql 8586 10月 7 01:22 innodb_t1.frm
-rw-rw----. 1 mysql mysql 8556 10月 7 01:22 innodb_t2.frm
-rw-rw----. 1 mysql mysql 8586 10月 6 16:28 t1.frm
-rw-rw----. 1 mysql mysql 92 10月 6 17:29 t1.MYD
-rw-rw----. 1 mysql mysql 1024 10月 6 17:29 t1.MYI

练习

创建四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试

mysql> create table innodb__t_t1(id int,name char(10))engine=innodb;
Query OK, 0 rows affected (0.30 sec) mysql> create table innodb__t_t2(id int,name char(10))engine=myisam;
Query OK, 0 rows affected (0.06 sec) mysql> create table innodb__t_t3(id int,name char(10))engine=memory;
Query OK, 0 rows affected (0.01 sec) mysql>
mysql> create table innodb__t_t4(id int,name char(10))engine=blackhole;
Query OK, 0 rows affected (0.05 sec)

1.innodb存储引擎 我们看到t1表就是innodb,innodb表类型在硬盘上会对应2个文件 frm是表结构 ibd是t1表数据文件

2.memory存储引擎  memory特点是数据存在内存里,不存放在硬盘上,只有表结构 t3.frm 没有表数据

3.backhole存储引擎  也是只有表结构frm

4.myisam存储引擎 对应3个文件  一个frm表结构  ,MYD是myisam的data文件 ,MYI是myisam索引文件

[root@mysql db1]# ll
总用量 152
-rw-rw----. 1 mysql mysql 61 10月 7 04:52 db.opt
-rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t1.frm
-rw-rw----. 1 mysql mysql 98304 10月 7 04:54 innodb__t_t1.ibd
-rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t2.frm
-rw-rw----. 1 mysql mysql 0 10月 7 04:54 innodb__t_t2.MYD
-rw-rw----. 1 mysql mysql 1024 10月 7 04:54 innodb__t_t2.MYI
-rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t3.frm
-rw-rw----. 1 mysql mysql 8586 10月 7 04:54 innodb__t_t4.frm

 总结:不同类型的表,在硬盘上有不同的体现,他们的存储机制都不一样

分别对四张表插入一条记录

mysql> insert into innodb__t_t1 values(1,'mike');
Query OK, 1 row affected (0.04 sec) mysql> insert into innodb__t_t2 values(1,'jack');
Query OK, 1 row affected (0.04 sec) mysql>
mysql> insert into innodb__t_t3 values(1,'peter');
Query OK, 1 row affected (0.00 sec) mysql>
mysql> insert into innodb__t_t4 values(1,'ken');
Query OK, 1 row affected (0.00 sec)

再查询一下四张表

mysql> select * from innodb__t_t1;
+------+------+
| id | name |
+------+------+
| 1 | mike |
+------+------+
1 row in set (0.11 sec) mysql> select * from innodb__t_t2;
+------+------+
| id | name |
+------+------+
| 1 | jack |
+------+------+
1 row in set (0.10 sec) mysql> select * from innodb__t_t3;
+------+-------+
| id | name |
+------+-------+
| 1 | peter |
+------+-------+
1 row in set (0.00 sec) mysql> select * from innodb__t_t4;
Empty set (0.00 sec)

第四张表是blackhole

结论

#blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录

 memory表特点

从上面看到t3表,memory有数据

我们重启mysql服务后,把内存清理了,再查看 mermory的数据表

service mysqld restart

数据没有了

mysql> select * from db1.innodb__t_t3;
Empty set (0.00 sec)

memory存储引擎

#memory,在重启mysql或者重启机器后,表内数据清空
以后用的比较多存储引擎,表结构是 innodb

mysql 使用存储引擎的更多相关文章

  1. MYSQL的存储引擎一般只要哪些?

    根据个人个人见解: MySQL的存储引擎(构成.安全.锁) Myisam:数据操作快速的一种引擎,支持全文检索.文件保存在数据库名称为目录名的 目录中,有3个文件,分别是表定义文件(.frm).数据文 ...

  2. MySQL常用存储引擎及如何选择

    一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...

  3. mysql 的存储引擎介绍

    在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? ...

  4. mysql数据库存储引擎及区别

    MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERAT ...

  5. mysql之存储引擎和文件配置

    (查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...

  6. MySQL数据库----存储引擎

    什么是存储引擎? 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操 ...

  7. MySql的存储引擎介绍

    下面主要介绍InnoDB.MyISAM和MEMEORY三种存储引擎. InnoDB存储引擎 InnoDB遵循CNU通用公开许可(GPL)发行.InnoDB已经被一些重量级互联网公司所采用,如雅虎.Sl ...

  8. MySQL之存储引擎(表类型)的选择

    和大部分的数据库不同,MySQL中有一个存储引擎的概念,用户可以根据数据存储的需求来选择不同的存储引擎.本次博客就来介绍一下MySQL中的存储引擎.MySQL版本 5.7.19. 概述 MySQL的存 ...

  9. MySql中存储引擎MyISAM与InnoDB区别于选择

    InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和 ...

  10. MySQL常用存储引擎功能与用法详解

    本文实例讲述了MySQL常用存储引擎功能与用法. MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE ...

随机推荐

  1. C++ template —— 模板中的名称(三)

    第9章 模板中的名称------------------------------------------------------------------------------------------ ...

  2. (原创)使用mceusb设备,将lirc移植到android笔记

    首先说一下大环境和总体步骤: 下载lirc 0.8.7源码,使用ubuntu的setup.sh,配置为mceusb的驱动,同时Compile tools for X-Windows选项去掉,生成con ...

  3. 《转》Python学习(13)-Python的字符编码

    转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnbl ...

  4. UVALive - 3507 Keep the Customer Satisfied

    题意:收到n个订单,每个订单有q,d分别代表做这个的时间,和最晚的完成时间,问你最多能接受几个订单 思路:贪心,我们显然要按最早的完成时间排序,那么接下来,我们用(6,8)和(4,9)做为例子,按照我 ...

  5. Express+Less+Gulp配置高效率开发环境

    版权声明:本文由金朝麟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/627049001486519548 来源:腾云阁 h ...

  6. ORA-00600: internal error code, arguments: [kgl-no-mutex-held]

    一.环境 windows oracle 11.2.0.4 RAC 二.问题现象 1.连接数据库后,无法查询 2.报错信息:ORA-00600: internal error code, argumen ...

  7. Python守护进程和脚本单例运行

    Python 守护进程 守护进程简介 进程运行有时候需要脱离当前运行环境,尤其是Linux和Unix环境中需要脱离Terminal运行,这个时候就要用到守护进程.守护进程可以脱离当前环境要素来执行,这 ...

  8. Android开发之ActionBar

    使用微信APP的小伙伴对于微信的ActionBar一定有印象,今天就带领大家一起实现以下这个效果. 第一步打开我们的开发工具,这里我使用的是Eclipse+ADT插件,然后创建我们的工程,这里选择An ...

  9. Visual Studio 2013安装Update 3启动crash的解决方法

    Visual Studio 2013安装完Update 3后启动立刻crash,异常信息为: System.InvalidOperationException was unhandled Messag ...

  10. dig命令安装

    yum -y install bind-utils  Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具 查找yahoo.com的A记录:(此处一定是域而不是 ...