• mysql 使用存储引擎


    三 使用存储引擎

    方法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_t1G;
    *************************** 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_t2G;
    *************************** 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

  • 相关阅读:
    两个问题解答、opencv、tensorflow、numpy、matplotlib的基本使用
    图像处理之几何变换
    anaconda一站式环境的搭建(anaconda、tensorflow、opencv)
    python基础--自定义模块、import、from......import......
    python基础--闭包、装饰器
    python基础--迭代器、生成器
    python基础--函数全解析(2)
    CSS弹性布局
    CSS定位布局
    仿写博客园主页
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/9747866.html
Copyright © 2020-2023  润新知