zoukankan      html  css  js  c++  java
  • 理解存储引擎MyISAM与InnoDB

    1、MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键,如果执行大量的select,insert   MyISAM比较适合

    2、InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况

    事务的ACID属性:atomicity,consistent,isolation,durable。

    关于死锁:

    什么是死锁?当两个事务都需要获得对方持有的排他锁才能完成事务,这样就导致了循环锁等待,也就是常见的死锁类型。

    解决死锁的方法:

    1、  数据库参数

    2、  应用中尽量约定程序读取表的顺序一样

    3、  应用中处理一个表时,尽量对处理的顺序排序

    4、  调整事务隔离级别(避免两个事务同时操作一行不存在的数据,容易发生死锁)

    3、关于count()函数

    myisam保存有表的总行数,如果select count(*) from table;会直接取出出该值

    innodb没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre       条件后,myisam和innodb处理的方式都一样。

    1、可以用 show create table tablename 命令看表的引擎类型。

    3、可以执行以下命令来切换非事务表到事务(数据不会丢失),innodb表比myisam表更安全:alter table tablename type=innodb;
      或者使用 alter table tablename engine = innodb;

    下面先让我们回答一些问题:   

    ◆你的数据库有外键吗?   

    ◆你需要事务支持吗?   

    ◆你需要全文索引吗?   

    ◆你经常使用什么样的查询模式?   

    ◆你的数据有多大?   

    参考:

    https://www.cnblogs.com/y-rong/p/8110596.html

  • 相关阅读:
    [Python] Array Attributes of Numpy lib
    《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.1 需求分析面面观
    UVA 10201 Adventures in Moving
    《史蒂夫·乔布斯传》官方正式中文版电子书(高清晰完整版)
    为什么要用BitSet
    sed 技巧一例:特定位置插入
    Mac+IPAD上使用wireshark抓包
    【经验谈】XmlSerializer的坑
    HTML语言简单回顾
    不可思议的每日培训(1)——日复一日的每日分享
  • 原文地址:https://www.cnblogs.com/iloverain/p/9623447.html
Copyright © 2011-2022 走看看