zoukankan      html  css  js  c++  java
  • Mysql的一些问题

    事务四大特性

    • 原子性 不可分割的操作单元,事务中所有的操作,要么全部成功;要么撤回到执行事务之前的状态
    • 隔离性 事务操作之间彼此独立和透明互不影响。事务独立运行。这通常使用锁来实现。一个事务处理后的结果,影响了其他的事务,那么其他事务会撤回。事务100%隔离,需要牺牲速度
    • 一致性 如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也是一致的。
    • 持久性 事务一旦提交,其结果就是永久的,即便发送系统故障,也不能回复。

    事务隔离级别

    • 未提交读 允许脏读,其他事务只要修改数据,即使未提交,本事务也能看到修改后的数据值。也就是可能读取到其他会话中未提交的事务修改数据。
    • 提交读 只能读取到已经提交的数据,Oracle 等多数据库默认都是该级别(不重复读)
    • 可重复读 无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务的影响
    • 串行读 每次读写都需要获得表级共享锁,读写相互都会阻塞

    所有相关

    Mysql数据库的四类索引

    • index --- 普通索引,数据可以重复,没有任何限制
    • unique --- 唯一索引,要求索引值必须唯一,但允许有空值
    • primary key 主键索引,是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值,一般是在创建表的同时创建主键索引
    • 联合索引 在多个字段上创建索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。
    • fulltext 全文索引,对于大表的文本域:char、varchar、text列才能创建全文索引,主要用于查找文本中的关键字,并不是直接与索引中的值进行比较,fulltext更像一个搜索引擎,配合match against操作使用,而不是一般的where语句中加like。
      注意:
      1、全文索引目前只有在MyISAM存储引擎支持全文索引,InnoDB引擎5.6以下版本还不支持全文索引
      2、所有的存储引擎对每个表至少支持16个索引,总索引长度至少为256字节,索引有两种存储类型,包括B型树索引和哈希索引
      3、索引可以提高查询的速度,但是创建和维护索引需要耗费时间,同时也会影响插入的速度,如果需要插入大量的数据,最好是先删除索引,插入数据后在建立索引

    索引生效条件

    假设 index(a,b,c)

    • 最左前缀匹配:模糊查询时,使用%匹配时:'a%'会使用索引,‘%a’不会使用索引
    • 条件中有or,索引不会生效
    • a and c , a生效,c不生效
    • b and c, 都不生效
    • a and b>5 and c, a和b生效, c不生效

    脏读、幻读、不可重复读

    • 脏读:是指事务T1将某一值修改,然后事务T2读取该值,此后T1因某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。
    • 不可重复读:是指在数据库访问时,一个事务访问内的两次相同查询却返回了不同的数据。
    • 幻读:指当事务不是独立执行时发生的一种现象,比如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行,同事第二个事务也修改了这个表中的数据,这种修改是向表中插入一行新的数据,那么就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生幻觉一样。

    存储引擎MyISAM和InnoDB区别:

    1、InnoDB支持事务,MyISAM不支持。
    2、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。
    3、InnoDB支持外键,MyISAM不支持。
    4、从Mysql5.5.5以后,InnoDB是默认引擎
    5、MyISAM支持全文类型索引,InnoDB不支持全文索引
    6、InnoDB不保存表的总行数,select count(*) from table时,InnoDB需要扫描整个表计算多好行,但MyISAM只需简单读出保存好的总行数即可。注意:当 count(*)语句包含where条件时MyISAM也需要扫描这个表。
    7、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是MyISAM表中可以和其他字段一起建立联合索引
    8、清空整个表时,InnoDB是一行一行删除的,效率非常慢。MyISAM则会重建表。
    9、InnoDB支持行锁(某些情况下还是锁整表,如:update table set a=1 where user like "%lee%")
    10、MyISAM创建表生成三个文件:.frm数据表结构、.myd数据文件、.myi索引文件;InnoDB只生成一个.frm文件,数据存在ibdate1.log

    僵尸将臣
  • 相关阅读:
    Java回调机制
    显示Title和隐藏Title的ListView
    ListView的小知识
    小知识点
    Shader的使用
    项目知识(二)
    项目知识(一)
    复习篇(一)Activity的生命周期和启动模式
    BootStrap 提示框
    BootStrap选项卡
  • 原文地址:https://www.cnblogs.com/sunshenggang/p/12449198.html
Copyright © 2011-2022 走看看