zoukankan      html  css  js  c++  java
  • mysql_涂抹笔记--第7章 选择对象的存储引擎

    第7章    选择对象的存储引擎

     

    常见的引擎有:
     MyISAM,  Innodb,  NDBCluster,  Memory , Archive, Merge,  federated 


    MyISAM存储引擎

     

      MyISAM 引擎的前身是ISAM存储引擎, 实际上那会还没有存储概念, ISAM也只是种算法, 或者说数据的处理方式。 5.5之前 mysql默认的存储引擎是MyISAM, 5.5后默认的存储引擎是InnoDB

     

    创建一个存储引擎是 MyISAM
      CREATE TABLE yang.t_myd2 (id int) ENGINE=myisam;

     

    对于创建后, 在物理层面, 每个MyISAM表对象都是由3个独立的操作系统文件组成, 文件名与表对象名相同, 文件的扩张名有下面3个类型(注意大小写)
      .frm: 对象结构定义文件, 用于存储表对象的结构
      .MYD: 数据文件, 用于存储表数据
      .MYI: 索引文件, 用于存储表的所以信息

    7.4 InnoDB 存储引擎
    mysql5.5 版本之后, InnoDB是默认存储引擎

      1)设计遵循ACID模型, 支持事务, 拥有从服务崩溃中恢复的能力,能够最大限度地保护用户的数据。
      ACID: 原子性 一致性 隔离性 持久性
      2)支持行级锁, 并引入类似Oracle数据库中的一致性读特性, 以提升多用户并发时的读写性能
      3)InnoDB 引擎表组织数据时,按照主键(primary keys)聚簇,通过主键查找数据时性能极为优异
      4)在维护数据完整性方面, InnoDB 支持外键(foreign-key)约束

      5)InnoDB 拥有自己独立的缓存池(对应 innodb_buffer_pool_size 系统变量, 类似Oracle 数据库中的SGA_TARGET),常用数据(含索引)都在缓存中
      6)对于insert update delete 操作, 会被一种为change buffering的机制自动优化,InnoDB不仅提供了一致性读,而且还能缓存变更数据, 减少磁盘I/                 

        CREATE TABLE yang.test3 (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        v1 VARCHAR(20)
        ) ENGINE = INNODB AUTO_INCREMENT=1
        DEFAULT CHARACTER SET UTF8MB4
        COLLATE UTF8MB4_GENERAL_CI;

    InnoDB特性
      1)所有的表都要创建主键, 最好选择常作为查询条件的列, 如果没有合适的列,那么就创建在auto_increment 列上
      2)如果数据是通过多表关联获取, 那么使用join, 为提高join性能, 最好在join列上创建索引, 并且join条件的这些列最好使用相同的数据类型和定义
      3)综合考虑磁盘的I/O能力, 必要时可以禁用autocommit自动提交功能
      4)相互关联的DML操作放在同一个事务中处理
      5)停止使用lock table 语句, innodb 能够处理多回话并发读写同一个表对象,如果是希望执行拍它记录更新, 那么可以尝试使用 select .. for update 语句
      6)启动innodb_file_per_table 选项, 以使表中数据和索引保存在单独的文件中, 而不能保存到系统表空间(system tablespace)
      7)评估数据和读写行为是否使用与新的压缩(compression)特性, 如果可以,建议执行 create table时指定 row_format=compressed选项,提高读写性能
      8)启动mysql服务时附加 -sql_mode=NO_engine_substitution, 防止表被创建成其他存储索引
      9)在新版中, 删除或创建索引性能有所提升,对系统的冲击也有所降低
      10)清空(truncate)表, 现在非常快 ,并释放的空间能够被操作系统重用
      11)使用DYNAMIC格式保存大数据类型(如BLOB或TEXT) 将更加有效率
      12)在INFORMATION_SCHEMA 库中提供了若干新的表对象, 可用于监控存储引擎的工作和负载情况
      13)新增performance_schema库 可以用来查看存储引擎的性能统计数据

     

  • 相关阅读:
    L255 Learning to say no brings a thrill of freedom
    2019-02-25 EST 科技文翻译
    L253 Work and Pleasure
    2019.2.22 初级英语口语班 结课
    L252 小组作业
    2019-02-22 L231
    leetcode 67 Add Binary ----- java
    leetcode 66 Plus One ----- java
    leetcode 65 Valid Number ----- java
    leetcode 64 Minimum Path Sum ----- java
  • 原文地址:https://www.cnblogs.com/augustyang/p/7774122.html
Copyright © 2011-2022 走看看