• 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来回交互

         

  • 相关阅读:
    WordCount项目基本功能
    让自己的头脑极度开放
    Docker安装Mysql5.7
    MySQL中的函数索引(Generated Column)及一次SQL优化
    关于老系统的重构和优化选择
    JIRA笔记(一):安装部署JIRA
    Jenkins 配置GitLab插件和Git插件
    Loading descriptor for XXX.'has encountered a problem' A internal error occured during:"Loading ....."
    Newton插值的C++实现
    Lagrange插值C++程序
  • 原文地址:https://www.cnblogs.com/yxh168/p/9163759.html
Copyright © 2020-2023  润新知