MySQL基础入门学习14存储引擎

Posted jade-91

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础入门学习14存储引擎相关的知识,希望对你有一定的参考价值。

 

查看数据表的创建命令:

技术分享图片

 

【存储引擎】: mysql可以将数据以不同的奇数存储在文件(内存)中,这种技术就成为存储引擎

        每一种存储引擎都使用了不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能

            在关系型数据库当中,数据的存储是以表的形式来实现的。所以存储引擎也可以称为表类型

       【MySQL支持的存储引擎】:

                    MyISAM,

                    InnoDB,

                    Memory,

                    CSV,

                    Archive

 

【并发处理】: 

      并发控制: 当多个连接对记录进行操作时保证数据的一致性和完整性的技术。

      例如两个用户同时登陆,其中一个要对某一行记录删除,而另一个用户恰好要读取这一行记录,

        结果可能是正在读取信息的用户报错而退出,也可能得到一条与实际记录不符的信息。

        解决这类经典问题的方法就是使用并发控制: 在处理并发读或并发写时,系统会使用一套锁系统来解决这个问题。

        这个锁系统由两类【锁】来组成:

                  【共享锁(读锁)】: 在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化(相互不做干扰);

                  【排他锁(写锁)】: 在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作(出于安全策略的考虑)。

                    【锁的颗粒】: 锁定时的单位。我们其实只需要对修改的数据精确加锁即可,而无需对所有资源均加锁。加锁只加最对的,而不是加最大的。

                          加锁会增加系统的开销: 我们通过锁策略在锁开销与数据安全之间寻求一种平衡

                                                        【表锁】:是一种开销最小的锁策略。 当用户针对某数据表进行操作时,用户即获得了对该表的写锁权限,写锁会禁止其他用户的读、写操作。这张表只能有一个锁。

                          【行锁】:是一种开销最大的锁策略,是支持最大并发操作处理的情况。这张表中有多少条记录就可能对每一个记录都有一个锁

  

 

【事务处理】:【事务】是数据库区别于文件系统的重要特征之一, 用于保证数据库的完整性。

          例如,某个用户要通过网银给别人转200元,则操作如下:  

            1. 从当前账户减掉200元(账户余额大于等于200元);

            2. 在对方账户增加200元。

               两个过程应该作为一个整体出现,无论哪个过程出现了问题,都应该恢复到数据的原始状态。

       【事务的特性——ACID】:

               1. 原子性(Atomicity)

               2. 一致性(Consistency)

               3. 隔离性(Isolation)

               4. 持久性 (Durability)

 

      

【外键和索引】: 【外键】是保证数据一致性的策略 (see http://www.cnblogs.com/jade-91/p/8672669.html)

           【索引】是对数据表中一列或多列的值进行排序的一种结构,使用索引可以快速地访问数据表当中的特定信息,是进行记录快速定位的一种方法(类比书的目录)。

            可分为普通索引、唯一索引、全文索引、btree索引、hash索引......         

         

 

【各个存储引擎特点】

特点 MyISAM InnoDB Memory Archive
存储限制 256TB 64TB 有 (由内存大小决定)
事务安全 - 支持 - -
支持索引 支持 支持 支持  
锁颗粒 表锁 行锁 表锁 行锁
数据压缩 支持 - - 支持
支持外键 - 支持 -

 

                  此外, CSV是由逗号分隔的存储引擎,会在数据库的子目录中为每一表创建一个.csv文件(一种普通的文本文件),每一个数据行占用一个文本行,不支持索引

                BlackHole: 黑洞引擎,写入的数据都会消失,一般用于做数据复制的中继。

           一般最常用的存储引擎是MyISAM 和 InnoDB这两种存储引擎。

           其中,MyISAM适用于事务的处理不多的情况;

              InnoDB适用于事务处理比较多,需要有外键支持的情况。

           大牛们也可以对数据引擎进行扩展。

 

【设置存储引擎】

    【修改存储引擎的方法】: 

        方法一:通过修改MySQL配置文件实现: default-storage-engine = engine_name 

        方法二:通过创建数据表命令实现:

            CREATE TABLE table_name (

            ...

            ...

            ) ENGINE = engine_name;

            技术分享图片

            

        方法三:通过修改数据表命令实现

            ALTER TABLE table_name ENGINE [=] engine_name;

 

            技术分享图片

              

 

 

 

以上是关于MySQL基础入门学习14存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

MySQL入门学习笔记之存储引擎

MySQL从入门到精通高级篇MySQL表的存储引擎,InnoDB与MyISAM的对比

MySQL从入门到精通高级篇MySQL表的存储引擎,InnoDB与MyISAM的对比

MySQL索引&存储引擎,从基础到性能测试和调优

MySQL 基础知识(基本架构存储引擎差异)

Python学习————数据库基础