zoukankan      html  css  js  c++  java
  • Linux:Day40(下) Mariadb存储引擎引编译安装

    MySQL存储引擎:

      表类型:

        CREATE TABLE ... ENGINE=

      InnoDB:

        处理大量的短期事务;

        数据存储在“表空间”中;

          (1) 所有InnoDB表的数据和索引放置于同一个表空间中;

                表空间文件:datadir定义的目录下

                   数据文件:ibdate1,ibdata2,....

          (2) 每个表单独使用一个表空间存储表的数据和索引;

            Innodb_file_per_table=ON

            数据文件(数据和索引):tb1_name.ibd

            表格式定义:tab1_name.frm

        基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ;间隙锁防止幻读;

        使用聚集索引

        支持“自适应hash索引”

        锁粒度:行级锁

        MariaDB (XtraDB (percona))

      特性总结:

        数据存储:表空间

        并发:MVCC,间隙锁

        索引:聚集索引、辅助索引

        性能:预计操作、自适应hash、插入缓存区

        备份:支持热备(xtrabacup)

      MyISAM:

        支持全文索引(FULLTEXT index)、压缩、空间函数(GIS);但不支持事务,且为表级锁;

        崩溃后无法安全恢复

        适用场景:只读(或者写较少)、表较小(可以接受长时间进行修复操作)

          Aria:crash-safe

        文件:

          tb1_name.frm:表格式定义

          tb1_name.MYD:数据文件

          tb1_name.MYI:索引文件

        特性总结:

          加锁和并发:表级别

          修复:手工或自动修复、但可能丢失数据

          索引:非聚集索引

          延迟更新索引键

          压缩表

        行格式:dynamic,fixed,compressed,compact,redundent

      其它的存储引擎:

        CSV:将普通的CSV(字段通过逗号分隔)作为MySQL表使用;

        MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;

        BLACKHOLE:类似于/dev/null,不真正存储任何数据;

        MEMORY:所有数据都保存于内存中,内存表;支持hash索引;表级锁;

          临时表

        PERFORMANCE_SCHEMA:伪存储引擎;其内部数据只有在mysql启动起来才会存在,关闭消失

        ARCHIVE:仅支持SELECT和INSERT操作;支持行级锁和专用缓存区;

        FEDERATED:用于访问其它远程MYSQL服务器一个代理,它通过创建一个到远程MYSQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取;

          在MariaDB上实现是FederatedX

      

      MariaDB支持的其它存储引擎:

        OQGraph

        SphinxSE

        TokuDB

        Cassandra

        CONNECT

        SQUENCE

    并发控制:

      锁:

        读锁:共享锁

        写锁:独占锁

      锁粒度:

        表级锁

        行级锁

      锁策略:在锁粒度及数据安全性寻求的平衡机制;

        每种存储引擎都可以自行实现其锁策略和锁粒度;

        MySQL在服务器级也实现了锁,表级锁;用户可显示请求;

          (1) LOCK TABLES
            tbl_name [[AS] alias] lock_type
            [, tbl_name [[AS] alias] lock_type] ...

          lock_type:
            READ [LOCAL]
            | [LOW_PRIORITY] WRITE

            UNLOCK TABLES

          (2) FLUSH TABLES tb_name[,...] [WITH READ LOCK]

          (3) SELECT clase [FOR UPDATE] [WITH READ LOCK]

    MySQL事务:

      事务:一组原子性的SQL查询,或者说一个独立工作单元。

        事务日志

      ACID测试:

        A:atomicity,原子性:整个事务中的所有操作要么全部成功执行,要么全部失败后回滚;

        C:consistency,一致性:数据库总是从一个一致性状态转换为另一个一致性状态;

        I:Isolation,隔离性:一个事务所做出的操作在提交 之前,是不能为其它所见;隔离有多种隔离级别;

        D:durability,持久性:一旦事务提交,其所做的修改会永久保存于数据库中;

      事务:

        启动事务:START TRANSACTION

          ....

          ....

        结束事务:

          (1) COMMIT:提交

          (2) ROLLBACK:回滚

        注意:只有事务型存储引擎方能支持此类操作;

        建议:显示请求和提交事务,而不要使用“自动提交”功能;

          autocommit={1|0}

        事务支持savepoint    

          SAVEPOINT identifier
          ROLLBACK [WORK] TO [SAVEPOINT] identifier
          RELEASE SAVEPOINT identifier

        事务隔离级别:

          READ UNCOMMITED(读未提交)

          READ COMMITED(读提交)

          REPEATABLE READ(可重读)

          SERIALIZABILE(可串行化)

          可能存在问题:

            脏读;

            不可重复读;

            幻读;

            加锁读;

          tx_isolation:服务器变量, 默认为REPEATABLE-READ;可在SESSION级进行悠;

          SET tx_isolation=' '

            READ-UNCOMMITED

            READ-COMMITED

            REPEATABLE-READ

            SERIALIZABLE

          MVCC:多版本并发控制

        死锁:

          两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态;

        事务日志:

          事务日志的写入类型为“追加”,因此其操作为“顺序IO”;此日志通常被称为“预定式日志(write ahead logging)”;

            innodb_log_file_size

            innodb_log_files_in_group

            innodb_log_group_home_dir

      

      

  • 相关阅读:
    Tomcat6 一些调优设置内存和连接数
    【原创】使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException
    JVM内存的设置
    JBOSS以及tomcat最大连接数配置和jvm内存配置
    摘抄python __init__
    Python中__init__方法介绍
    Python 绝对简明手册
    python中eval, exec, execfile,和compile [转载]
    extern、static、auto、register 定义变量的不同用法
    Python 网络编程说明
  • 原文地址:https://www.cnblogs.com/sq5288/p/11526733.html
Copyright © 2011-2022 走看看