08 MySQL存储引擎

查询当前默认存储引擎
    SHOW VARIABLES LIKE 'table_type' ;
    
查询当前数据库支持的引擎有哪些 :
    SHOW ENGINES \G   -- 推荐这种 , 显示更多信息
    SHOW VARIABLES LIKE 'have%' ;
 
建表时指定存储引擎
    CREATE TABLE tbl_name (
        col_1 BIGINT(20) NOT NULL AUTO_INCREMENT
        ,col_2 VARCHAR(15)
        , PRIMARY KEY(col_1)
    ) ENGINE = MyISAM DEFAULT CHARSET = gbk ;
    
修改已有表的存储引擎
    ALTER TABLE tbl_name SET ENGINE = InnoDB ;
    
展现建表语句
    SHOW CREATE TABLE tbl_name \G
    
给MEMORY存储引擎的表指定 HASH/TREE索引
    CREATE INDEX xxx_index USING HASH/TREE ON tbl_memory(col_xxx) ;
 
查询索引信息
    SHOW INDEX FROM tbl_memory \G
    
更换索引(须要两步操做:先drop再create)
    DROP INDEX xxx_index ON tbl_memory ;
    CREATE INDEX xxx_else_index USING BTREE on tbl_memory(col_xxx) ;
    
MEMORY 使用心得 :    
    MySQL启动时 使用 --init-file 选项 , 利用 `INSERT INTO .. SELECT .. ` 或者 `LOAD DATA INFILE` 语句 , 能够从持久稳固的数据源加载数据 .
    当不须要MEMEOY表时 , 执行 `DELETE FROM` 或 `TRUNCATE TABLE` 或 `DROP TABLE` 语句来释放内存 .
    
MERGE存储引擎的使用 :
    CREATE TBALE xxx_01 ..
    CREATE TABLE xxx_02 ..
    
    CREATE TABLE xxx_merge(
        col_1 xxx
        ,col_2 xxx
        ,INDEX (xxx)
    ) ENGINE = merge UNION(xxx_01 , xxx_02) INSERT_METHOD=LAST
    
    向xxx_01 /xxx_02 表中跟新数据都会影响 xxx_merge表 ,
    而向xxx_merge表中插入数据的时候 , 会影响xxx_02表 , 由于INSERT_METHOD = LAST ;
    而且 即便 插入表的数据 是符合 xxx_01 的 , 好比时间 , 也不会智能的插入到xxx_01中 ,这也是和分区表不一样的地方.
    
 
存储引擎的选择 :
    MyISAM : 读和插入 操做多 , 而更新和删除操做少 , 而且对事务完整性/并发性 要求不是很高的 场景
    InnoDB : 适合 并发性/事务完整性 要求高 , 有许多 更新/删除操做的 场景 ; 提供了完整提交(commit) 和事务回滚(rollback)
    MEMORY : 数据保存在缓存中 , 能够提供快速定位. 缺陷 大小有限制 , 适合更新不频繁的小表 . 还要注意 数据库异常 后 数据是能够恢复 ;
    MERGE  : 用于将一系列等同的MyISAM表 以逻辑方式组合在一块儿,并做为一个对象引用它们.
优势在于能够突破对单个MyISAM表大小的限制.
经过将不一样的表分布在多个磁盘上,能够有效地改善MERGE表的访问效率.对数据仓储等VLDB环境十分适合.
相关文章
相关标签/搜索