• Mysql的数据库引擎


    Mysql的数据库引擎

    Mysql的逻辑分层

    连接层-->服务层--->引擎层--->存储层

    什么是数据库引擎

    数据库引擎是用于存储、处理和保护数据的核心服务。

    当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是通过数据库引擎去访问数据库文件

    注意:数据引擎是指表格中的引擎,

    数据库引擎innodb与myisam区别

    是否支持事务

    • InnoDB支持事务
      对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin transaction和commit之间,组成一个事务;

    • MyISAM不支持,

    支持锁的级别不同

    • InnoDB支持行锁
      注意:数据库的主键和索引对锁是有影响的。
      在使用for update的时候,在明确使用主键或者索引的时候才会是行锁,否则就是表锁。
    • MyISAM只支持表锁

    是否支持外键

    • InnoDB支持外键
    • MyISAM不支持。
      对一个包含外键的InnoDB表转为MYISAM会失败;

    存放索引的方式

    • InnoDB是聚集索引,
      数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。
      因此,主键不应该过大,因为主键太大,其他索引也都会很大。
    • MyISAM是非聚集索引,数据文件是分离的,
      索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

    查询具体行数的差异

    • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。
    • MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

    是否支持全文索引

    • Innodb不支持全文索引
    • MyISAM支持全文索引,查询效率上MyISAM要高于Innodb;

    如何选择存储引擎

    • 是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM
    • 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB。
    • 系统崩溃后,MyISAM恢复起来更困难,能否接受;
    • MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。

    存储引擎管理

    • 查看数据库支持的存储引擎
      show engines
    • 查看数据库当前使用的存储引擎,就是默认引擎是什么。
      show variables like '%storage_engine%'
      也可以在MySQL配置文件中查看。
      windows - my.ini。
      Linux - my.cnf
    • 查看数据库表所用的存储引擎
      show create table table_name
    • 创建表指定存储引擎
      create table table_name (column_name column_type) engine = engine_name
    • 修改表的存储引擎
      alter table table_name engine=engine_name
    • 修改默认的存储引擎
      在MySQL配置文件中修改下述内容:
      default-storage-engine=INNODB
      MySQL配置文件:
      windows系统 - MySQL安装目录/my.ini (5.7版本my.ini文件在数据目录中。 C:/programdata/MySQL Server 5.7/mysql/)
      linux系统 - /etc/my.cnf
  • 相关阅读:
    Spring Bean的生命周期
    Java中的Object类
    Java线程池七个参数
    ROS 第五讲 在模拟器中构建第一个机器人
    ROS 第四讲 让小车在RViz与Gazebo模拟器中跑起来
    ROS 第三讲 操控小乌龟
    ROS 第二讲 基本操作
    ROS 第一讲 引入
    自然语言处理(二) 新词发现或非监督词典构建
    递归找到一个复杂对象中的某个值和它的最小层级
  • 原文地址:https://www.cnblogs.com/wwbplus/p/11801375.html
Copyright © 2020-2023  润新知