zoukankan      html  css  js  c++  java
  • mysql基础之-mysql存储引擎概述(八)

    0x01

    mysql 存储引擎:存储引擎也通常被称作“表类型”

    mysql> show engines;   --- 查看当前所有所支持的存储引擎
    mysql> show table status

    存储引擎格式:
    SHOW TABLE STATUS [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

    mysql> show table status in hellodb where Name='class'G

    Name 表名
    Engine 存储引擎
    Version:版本
    Row_format:行格式
    {DEFAULT|DYNAMIC|FIXED|COMMPRESSED|REDUNDANT|COMPACT}

    Rows:表中的行数
    Avg_row_length:平均每行包含的字节数
    Data_length:表中数据总体大小,单位为字节
    Max_data_length:表能够占用的最大空间,单位为字节,0表示么有上限
    Index_length:索引的大小,单位为字节
    Data_free:对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间

    Auto_increment:下一个AUTO_INCREMENT的值
    Create_time:表的创建时间
    Update_time: 表数据的最后一次修改时间
    Check_time: 使用CHECK TABLE或myisamchk最近一次检查表的时间
    Collation:排序规则
    Checksum:如果启动,则为表的checksum
    Create_options:创建表时指定使用的其他选项
    Comment:表的注释信息

    InnoDB
    两种格式:
      1.innodb_file_per_table=OFF,即是用共享表空间
        每个表一个独有的格式定义文件:tb_name.frm
        还有一个默认位于数据目录下的共享的表空间文件:ibdata#
      2.innodb_file_per_table=ON,即是用独立表空间
        每个表在数据库目录下存储两个文件
          tb_name.frm
          tb_name.ibd


    MyISAM:
       每个表都在数据库目录下存储三个文件
        tb_name.frm
        tb_name.MYD
        tb_name.MYI

    表空间: table space ,由InnoDB管理的特有格式数据文件,内部可同时存储数据和索引

        如何修改默认存储引擎:通过default_storage_engine服务变量实现

        各存储引擎的特性:
          InnoDB:
            支持事务,有事务日志
            ib_logfile0
            ib_logfile1
            支持外键约束
            支持MVCC(多版本并发控制)
            支持聚簇索引
            聚簇索引之外的其他索引,通常称之为辅助索引
            行级锁:间隙锁
            支持使用辅助索引
            支持自使用hash索引
            支持热备份

          MyISAM:
            全文索引
            支持表压缩存放:做数据仓库,能节约存储空间并提升性能
            支持空间索引
            表级锁
            延迟更新索引

            不支持事务、外键和行级锁
            崩溃后无法安全恢复数据

      使用场景:只读数据,表较小,能够忍受崩溃后的修复操作和数据丢失

    mysql数据库其他存储引擎

      ARCHIVE
        仅支持INSERT和SELECT,支持很好压缩功能
        应用于存储日志信息,或其他按照时间序列实现的数据采集类的应用
      CSV:
        将数据存储为CSV格式,不支持索引,仅使用与数据交换场景
      BLACKHOLE:
        没有存储机制,任何发往次引擎的数据都会丢弃,其会记录二进制日志,因此,常用于多级复制架构中作中转服务器
      MEMORY:
        保存数据在内存中,内存表;常用于保存中间数据,如周期性的聚合数据等,也用于实现临时表
        支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型
      MRG_MYISAM:
        是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表
      NDB:
        是MySQL CLUSTER中专用的存储引擎、

      第三方的存储引擎
      OLPT
      XtraDB:增强的InnoDB,有Percona提供,编译安装时,下载XtraDB的源码替代MySQL存储引擎中的InnoDB的源码


      PBXT:MariaDB自带此存储引擎
      支持引擎级别的复制、外键约束,对SSD磁盘提供适当支持
      支持事务、MVCC


      TokuDB:使用 Fractal Trees索引,适用存储大数据,拥有很好的压缩比,已经被引入MariaDB

      列式数据存储引擎:
        Infobright:目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计
          InfiniDB
          MonetDB
          LucidDB

      开源社区存储引擎:
        Aria:前身为Maria,是增强版的MyISAM(支持崩溃后安全恢复,支持数据缓存)
        Groona:全文索引引擎
        Mroonga:是基于Groona的二次开发版
        OQGraph:由open query研发,支持图(网状 )结构的存储引擎
        SphinxSE:为Sphinx全文搜索服务器提供了SQL接口
        Spider:能将数据切分成不同的分片,比较高效透明的实现了分片(shared),并支持在分片上支持并行查询

        根据具体需要如何选择选择mysql存储引擎
            是否需要事务
            备份的类型的支持
            崩溃后的恢复
            特有的特性

        索引类型:
          聚簇索引
          辅助索引

          B树索引
          R树索引
          hash索引
          全文索引

  • 相关阅读:
    第十一课:Python语句讲解
    第十节课:再议数据结构与数据类型
    第九节课:这些难缠的符号
    第八节课:基本数据结构习题
    第七节课:字典
    第六节课:元组和集合
    第五节课:Python列表的应用
    Oracle问题处理
    springmvc读取服务器磁盘图片,显示于前台页面
    spring从服务器磁盘读取图片,然后显示于前端页面上
  • 原文地址:https://www.cnblogs.com/autopwn/p/5118660.html
Copyright © 2011-2022 走看看