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環境十分適合.
相關文章
相關標籤/搜索