【mysql数据库】存储引擎,索引,事务,锁机制,触发器,存储过程

一、存储引擎

       存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取。MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的。存储引擎进行文件的访问控制,针对于表而存在。不同的表可以使用不同的存储引擎方式。

      查看存储引擎的命令:show engines;

       热备份:热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,假如你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了

       冷备份:冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将要害性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。

MyISAM

        不支持外键,不支持事务,支持全文搜索。它的锁粒度是表锁,不支持行锁。底层为B+树索引,在磁盘存储。 数据和索引分离,即就是非聚集索引,数据离散程度大。数据有地址,索引和数据可单独存储。

InnoDB

       InnoDB是默认的事务型存储引擎,也是最重要,使用最广泛的存储引擎。在没有特殊情况下,一般优先使用InnoDB存储引擎。使用InnoDB时,会将数据表分为.frm 和 idb两个文件进行存储。InnoDB支持外键,支持事务,支持热备份。不支持全文索引,没有主键,没有唯一键,为每一行生产一个6字节的行id,作为主键。它的锁粒度是行锁,底层为B+树索引,在磁盘存储。索引当成数据一部分存储,即就是聚集索引。数据依赖索引进行存储,数据存储前提是索引要存在。

MEMORY

       默认的是哈希索引。数据在内存中存储,如果数据库重启或者宕机,表数据就会丢失。适用于临时数据的存储。把varchar当成char类型来存储,浪费内存、不用计算、效率高(空间换时间)。不支持BLOB(存储图片)与TEXT(大文本字段)。当有混合字段,只处理认识的类型,不认识的如BLOB或TEXT就交给MyISAM(磁盘)去处理,效率降低。解决方法将字段转化成认识的字段进行处理。

ARCHIVE

       以10:1归档压缩。不支持索引,适用于日志数据(不常用的)的存储。每个操作都会产生日志,数据量大平时不会去查看,除非出现错误。只支持insert与select操作。

二、索引

       索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。在没有索引的情况下,数据库会遍历全部200条数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。一般数据库默认都会为主键生成索引。

索引分为聚集索引非聚集索引两种:

       聚集索引是按照数据存放的物理位置为顺序的,把索引当成数据一部分存储

       非聚集索引就不一样了,是把数据和索引分离进行存储。

       各自优势:聚集索引能提高多行检索的速度,而非聚集索引对于单行的检索很快

(一)Mysql索引的类型

          a)普通索引

         b)唯一索引

         c)全文索引

         d)单列、多列索引

         e)组合索引

(1)索引的创建

a)普通索引(这个是最基本的索引)

建表时:INDEX IndexName(`字段名`(length)) 

建表后:CREATE INDEX IndexName ON `TableName`(`字段名`(length)) 

或ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length)

注意:如果字段数据是CHAR,VARCHAR类型,可以指定length,其值小于字段的实际长度,如果是BLOB和TEXT类型就必须指定length。

这个length的用处是什么?

有时候需要在长文本字段上建立索引,但这种索引会增加索引的存储空间以及降低索引的效率,这时就可以用到length,创建索引时用到length的索引,我们叫做前缀索引,前缀索引是选择字段数据的前n个字符作为索引,这样可以大大节约索引空间,从而提高索引效率。

此处展示的语句用于创建一个索引,索引使用字段数据的前10个字符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值