zoukankan      html  css  js  c++  java
  • Mysql 存储引擎

    --------------------------------------------目录-------------------------------------------------

     • 一般项目的体系结构 及存储引擎的分类

     • MyISAM 存储引擎

     • Innodb 存储引擎(推荐)

     • CSV 存储引擎

     • Archive 存储引擎

     • Memory 存储引擎

     • Federated 引擎

     • 如何选择正确的存储引擎(4个方面进行考虑)

    --------------------------------------------

    一般项目的体系结构

    mysql服务层

    存储引擎层

    Mysql 使用 插件式存储引擎

    都属于存储引擎   

            

     -------------------------------------------------------------------

    MyISAM 存储引擎

     frm 是记录结构的, MYD和 MYI 是MyISAM 特有的

      

      例   

    表级锁,对数据进行修改时需要全表加锁。读取时也是需要家共享锁。

    对读写操作并发性不是很好,但是只读的话不怎么影响,共享锁不阻塞共享锁

     

    支持全文索引。    

    支持text,blob,前500个字符的前缀索引。  

    如果是只读表的话,就是没有修改操作的表, 可以压缩操作。压缩后的表不能进行插入。

     什么时候MyISAM

     --------------------------------------------------------------------------

    Innodb 存储引擎

        支持小事务

    frm 是记录表结构的  idb 是存储数据的  。  如果是OFF  ibdata1

    frm 文件 。 数据字典   表,列,索引的相关信息 

    ACID特性  原子性,一致性,隔离性,持久性

    实现以上特性。 从做日志 Redo log主要实现持久性, 回滚日志  Undo log

     

     锁的粒度 : 表级锁, 行级锁。

     行级锁 :写操作时,锁定资源更少,支持并发更多。

    阻塞:一个在等另一个资源的释放,就是阻塞。阻塞是为了并发并正常运行。大量阻塞就会出现问题,性能整体下降。

    死锁:两个或两个以上的相互占用了互相等待的资源,产生异常。数据库会自动发现死锁。

    ---------------------------------------------------------------------------------------------------------------------

     CSV 存储引擎

    以文件方式存储的,可以查看文件命令直接查看。

    CSV适用场景

    ---------------------------------------------------------------------------------------------------------------

     Archive 存储引擎

    ----------------------------------------------------------------------------

    Memory 存储引擎

    IO效率高,数据存在内存中,重启mysql 数据会消失,但是结构会保留。

               合适的索引类型对性能影响很重要。

      

    ----------------------------------------------------------------------------------------------------------

     Federated 引擎

    ----------------------------------------------------------------------------------------------

    如何选择正确的存储引擎(4个方面进行考虑)

    是否需要事务支持 : Innodb 是目前来说最稳定并且经过验证的存储引擎

                                如果不需要事务,并且主要是INSERT 和 SELECT 操作 也可以使用MyISAM

              如果只有insert ,select 少的话可以选用Archive(例如日志)

    备份的考虑:生产环境中,可以在线热备的存储引擎,只有Innodb 有免费的热备方案。

          mysqldump备份属于逻辑备份,保证数据的一致性所以需要加锁。

     崩溃恢复 : myisam 损坏率更高,恢复速度慢

     考虑存储特有特性。

    除非万不得已,不要使用多种存储引擎。

    例如 Innodb 和 Myisam 的混合使用,事务回滚的时候 Innodb回滚,myisam并没有回滚,数据上会有问题。

    如果进行热备,Innodb有热备,myisam没有。也会出问题。

  • 相关阅读:
    Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 错误解决
    linux打包压缩的时候如何剔除某些不想打包的进来的文件
    linux修改时区和时间
    Linux scp远程文件/目录传输
    nginx报错”could not build the server_names_hash”
    配置Linux+Apache+Mysql+PHP环境
    PHP运行出现Notice : Use of undefined constant 的完美解决方案
    Silverlight 资源文件的问题 不能按指定语言切换
    Silverlight 应用 WCF RIA Services 在 IIS6 部署问题总结
    构架之累
  • 原文地址:https://www.cnblogs.com/zhaoyang-1989/p/6868655.html
Copyright © 2011-2022 走看看