Mysql存储引擎
           
            mysql > SHOW ENGINES;
            msyql> SHOW TBALES STATUS  [LIKE clause] [WHERE clause]

            SHOW TABLE STATUS [{FROM | IN} db_name]
            [LIKE 'pattern' | WHERE expr]
            存储引擎也通常称作“表类型”
            mysql> SHOW TABLE STATUS IN success WHERE Name='classes'\G
*************************** 1. row ***************************
           Name: classes
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 9
 Avg_row_length: 1820
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 4194304
 Auto_increment: NULL
    Create_time: 2017-03-23 05:48:29
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.01 sec)

Name:表名
Engine:存储引擎
Version:版本
Row_format:行格式
        {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
Rows:表中的行数
Avg_row_length:平均每行所包含的自己数:
Data_length:表中数据总体大小,单位是字节
Max_data_length:表能够占用的最大空间,单位为字节
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,即使用共享空间
                             每张表一个独有的格式定义文件:tc_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:
                       事务:事务日志
                       外键:
                       MVCC:
                       聚簇索引:
                             聚簇索引之外的其它索引,通常称为辅助索引
                       行级锁:间隙锁
                       支持辅助索引
                       支持自适应的hash索引
                       支持热备份       

               MyISAM:
                        全文索引:
                        压缩:用于实现数据仓库,能节约空间并提高性能
                        空间索引
                        表级锁
                        延迟更新索引
                      
                        不支持事务、外键和行级锁
                        崩溃后无法安全恢复数据
                       
                        适用场景: 只读数据、较小的表、能够容忍崩溃后的修复操作和数据丢失

              ARCHIVE:
                       仅支持INSERT和SELECT,支持很好压缩功能
                       适用于存储日志信息,或其它按时间序列实现的数据采集类的应用:
                       
                      不支持事务,不能很好的支持索引:
 
             CSV:
                       将数据存储为CSV格式:不支持索引:仅适用于数据交换场景:
              
              BLACKHOLE:
                       没有存储机制,任何发往此引擎的数据都会丢弃:其会记录二进制日志,因此,常用于多级复制架构中作中转服务器:

             MEMORY:
                       保存数据在内存中,内存表:常用于保存中间数据,如周期性的聚合数据等:也用于实现临时表
                       支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型

             MRG_MYISAM:是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表:
            
             NDB:是MySQL CLUSTER中专用的存储引擎

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

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

             TokuDB:使用Fractal Trees索引 ,使用于存储大数据,拥有很好的压缩比:已经引入MariaDB:
             
              列式存储引擎:
                     Inforight:目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计:
                     InfiniDB
                     MonetDB
                     LucidDB
                    
              开源社区存储引擎:
                     Aria:前身为Maria,可理解为增强版的MyISAM(支持崩溃后安全恢复,支持数据缓存)
                     Groona:全文索引引擎,Mroonga是基于Groona的二次开发版
                     OQGraph:由Open Query研发,支持图结构的存储引擎
                     SphinxSE:为Sphinx全文搜索服务器提供了SQL接口
                     Spider:能将数据切分成不同分片,比较高效透明地实现了分片,并支持在分片上支持并行查询:

              如何选择?
                    是否需要事务
                    备份类型的支持
                    奔溃后的恢复
                    特有的特性
                                                                                         
索引类型:
      
        聚簇索引
        辅助索引
  
        B树索引
        R树索引
        hash索引
        全文索引
       


        
1、查看存储引擎
mysql> SHOW ENGINES;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

2、查看默认的存储引擎
mysql> SHOW VARIABLES LIKE '%engine%';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| engine_condition_pushdown | ON     |
| storage_engine            | MyISAM |
+---------------------------+--------+
2 rows in set (0.00 sec)



            
09-22 00:19