MYSQL数据常用存储引擎

      这里主要介绍mysql两个主要引擎:INNODB、MYISAM。MySQL默认存储引擎是MYISAM。


一、INNODB存储引擎

       innodb引擎提供了对数据库ACID事务支持、行级锁和外键约束,处理大数据量的数据库系统。Mysql运行时innodb会在内存中建立缓存池,用于缓存数据和索引。但是该索引不支持全文搜索。不会保存表的行数,例如:count(*)是全表扫描。由于锁的颗粒小写入操作时不会锁定全表。

  1. 适用场景

      1)经常写入操作、并发更新请求。

      2)支持事务回滚、数据恢复(通过bin-log日志)

      3)支持外键约束

      4)支持自增列auto_increment


二、MYISAM存储引擎

       myisam引擎是mysql默认的存储引擎,它不支持事务、行级锁、外键约束,在执行写入操作时需要锁定全表,效率低。myisam可以保存行数,例如:count(*)不会扫描全表而是直接读取行数,效率高。读取数据大过写入操作myisam很适用。

  1.  适用场景 
      1)myisam不支持事务,如使用myisam存储数据可以在service层根据业务需求做控制。

      2)经常对表进行枷锁的场景、不支持外键。

      3)查询效率很高

      4)不能自动表损坏恢复数据


三、INNODB与MYISAM使用索引数据结构

      innodb和myisam都是使用B+Tree结构

      MyIASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。

      Innodb引擎的索引存储的是实际的数据。


四、INNODB与MYISAM的区别

  1. innodb主键索引

          表数据文件本身就是索引文件,必须要有主键。

     2. InnoDB的辅助索引(Secondary Index, 也就是非主键索引)

           会包含主键列,比如名字建立索引,内部节点会包含名字,叶子节点会包含该名字对应的主键的值,如果主键定义的比较大,其他索引也将很大。

     3. myisam主索引和辅助索引(Secondary key)

        结构上和innodb没有任何区别,只是主索引要求key是唯一的,辅助索引可以重复,结构上没有任何区别,只是主索引要求key是唯一的,辅助索引可以重复。


五、修改存储 引擎的几种方式

      1、修改配置文件my.ini

       将mysql.ini另存为my.ini,在[mysqld]后面添加default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB

      2、建表指定

create table user(   
    id int primary key,   
    name varchar(50)   
)type=Innodb;

     3、建表后更改

alter table user
type = InnoDB;

     查看修改是否成功:

show table status from user; 


mysql其他存储引擎

   Memory, Blackhole,  CSV, Performance_Schema,Archive, Federated , Mrg_Myisam






上一篇:C#实现的三种方式实现模拟键盘按键


下一篇:C++虚函数表解析