zoukankan      html  css  js  c++  java
  • MySQL存储引擎介绍

    mysql数据库常用的三种存储引擎: 

    数据库的存储引擎:5.6版本之后的默认为InnoDB存储,5.5版本之前的默认是MyISAM存储引擎
    1.第一种myisam:三个文件
    (1)表结构存文件、数据文件、搜索目录三个文件都存放在硬盘上
    (2)应用于以读和插入为主的操作,很少的更新和删除
    (2)不支持事务安全、不支持外键、不支持行级锁,表级锁严重影响并发

    2.第二种innodb:两个文件
    (1)表结构文件、数据和搜索目录文件都存放在硬盘上
    (2)支持支持外键、支持行级锁、表级锁、事务安全确保事务的完整提交和回滚,
    (3)
    3.第三种memory:两个文件
    (1)表结构存储在硬盘,数据存储在内存,对表的大小有限制
    (2)读写速度快,关机会导致内存数据的丢失,多用于热新闻

    MyISAM和InnoDB区别

    MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。

    大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下。(如果你不介意 MyISAM 崩溃回复问题的话)。

    两者的对比:

    1. 是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

    2. 是否支持事务和崩溃后的安全恢复:MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

    3. 是否支持外键: MyISAM不支持,而InnoDB支持。

    4. 是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。推荐阅读:MySQL-InnoDB-MVCC多版本并发控制https://segmentfault.com/a/1190000012650596

    存储引擎在mysql中的使用  

      存储引擎相关sql语句

    查看当前的默认存储引擎:
        mysql> show variables like "default_storage_engine";
        +------------------------+--------+
        | Variable_name          | Value  |
        +------------------------+--------+
        | default_storage_engine | InnoDB |
        +------------------------+--------+
        1 row in set (0.00 sec)
    查看当前的默认存储引擎
    查询当前数据库支持的存储引擎:
        mysql> show engines G;
    查询当前数据库支持的存储引擎

      指定存储引擎建表  

    mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM; 
    
    mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;
    
    也可以使用alter table语句,修改一个已经存在的表的存储引擎。
    
    mysql> alter table ai engine = innodb;
    在建表时指定
    #my.ini文件
    [mysqld]
    default-storage-engine=INNODB
    在配置文件.ini中指定
    
    
  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/open-yang/p/11411668.html
Copyright © 2011-2022 走看看