Mysql常用的存储引擎

存储引擎

    存储引擎是表级别的概念,不同的存储引擎保存数据和索引的方式是不相同的.

MyISAM存储引擎

        MyISAM最典型的性能问题就是表锁的问题.  MyISAM只将数据写到内存中,然后等待操作系统定期将数据刷到磁盘上.

        不支持事务

        表级锁定

        读写相互阻塞,写入不能读,读时不能写

        只缓存索引

        不支持外键约束

        不支持聚簇索引

        读取数据较快,占用资源较少

        不支持MVCC(多版本并发控制机制)高并发

        崩溃恢复性较差

       MySQL5.5.5前默认的数据库引擎 

     适用场景:只读(或者写较少),表较小(可以接受长时间进行修复操作)

     MyISAM引擎文件: 

          tbl_name.frm: 表格式定义 

          tbl_name.MYD: 数据文件 

          tbl_name.MYI: 索引文件 

InnoDB引擎特点

      支持事务,适合处理大量短期事务

      行级锁

      读写阻塞与事务隔离级别相关

      可缓存数据和索引

      支持聚簇索引

      崩溃恢复性更好

      支持MVCC高并发

      从MySQL5.5后支持全文索引

      从MySQL5.5.5开始为默认的数据库引擎 

      InnoDB数据库文件

         所有InnoDB表的数据和索引放置于同一个表空间中 

                表空间文件:   datadir定义的目录下   

                数据文件:      ibddata1, ibddata2, ...

        每个表单独使用一个表空间存储表的数据和索引 

                启用:innodb_file_per_table=ON     

        两类文件放在数据库独立目录中   

                数据文件(存储数据和索引):tb_name.ibd   

                表格式定义:tb_name.frm 

CSV引擎

   CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中.可以使用 CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换 

管理存储引擎

     查看mysql支持的存储引擎: 

             show engines;

    查看当前默认的存储引擎: 

            show variables like '%storage_engine%';   

     设置默认的存储引擎: 

      vim /etc/my.conf 

        [mysqld] 

        default_storage_engine= InnoDB; 

     查看库中所有表使用的存储引擎 

          show table status from db_name;

     查看库中指定表的存储引擎 

         show table status like ‘tb_name‘; 

         show create table tb_name;

     设置表的存储引擎:

         CREATE TABLE  tb_name(... )  ENGINE=InnoDB;

         ALTER TABLE  tb_name  ENGINE=InnoDB; 

 选择合适的引擎

   事务

   备份

   崩溃恢复

   特有的特性

MySQL分层架构

     上层是服务器层的服务和查询执行引擎

     下层是存储引擎

      存储引擎和服务层之间处理查询的时候通过API来回交互

     

原文地址:https://www.cnblogs.com/yxh168/p/9163759.html