简介:文章目录MySQL各大存储引擎InnoDB:MyISAM存储引擎MEMORY存储引擎MySQL中的锁概念存储引擎总结常用DCL语句 (持续更新)最近在整理数据仓库相关的知识,虽然现在数据仓库产品已经很普遍了,但是mysql使用的还是非常 ...

文章目录MySQL各大存储引擎InnoDB:MyISAM存储引擎MEMORY存储引擎MySQL中的锁概念存储引擎总结常用DCL语句 (持续更新)最近在整理数据仓库相关的知识,虽然现在数据仓库产品已经很普遍了,但是mysql使用的还是非常频繁,在此整理一下msyql 存储引擎相关的知识,还有一些常用的DCL语句。MySQL各大存储引擎show engines;

Mysql 数据引擎及常用DCL

InnoDB:InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,,InnoDB是默认的MySQL引擎。InnoDB主要特性有:InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键InnoDB被用在众多需要高性能的大型数据库站点上InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件补充说明 ACID:A 事务的原子性(Atomicity):指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.C 事务的一致性(Consistency):指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变.I 独立性(Isolation):事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致.D 持久性(Durability):事务的持久性是指事务执行成功以后,该事务所对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚.MyISAM存储引擎MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度(涉及锁的操作才会造成操作缓慢),但不支持事物。MyISAM主要特性有:大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16最大的键长度是1000字节,这也可以通过编译来改变,对于键长度超过250字节的情况,一个超过1024字节的键将被用上BLOB和TEXT列可以被索引NULL被允许在索引的列中,这个值占每个键的0~1个字节所有数字键值以高字节优先被存储以允许一个更高的索引压缩每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE操作的时候该列被更新,同时AUTO_INCREMENT列将被刷新。所以说,MyISAM类型表的AUTO_INCREMENT列更新比InnoDB类型的AUTO_INCREMENT更快可以把数据文件和索引文件放在不同目录每个字符列可以有不同的字符集有VARCHAR的表可以固定或动态记录长度VARCHAR和CHAR列可以多达64KB使用MyISAM引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)。MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MEMORY存储引擎MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。MEMORY主要特性有:MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度MEMORY存储引擎执行HASH和BTREE缩影可以在一个MEMORY表中有非唯一键值MEMORY表使用一个固定的记录长度格式MEMORY不支持BLOB或TEXT列MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)MySQL中的锁概念Mysql中不同的存储引擎支持不同的锁机制。比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁,默认情况下采用行级锁。Mysql3中锁特性如下:表级锁:开销小,加锁块;不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发性也最高。页面锁:开销和加锁界于表锁和行锁之间,会出现死锁;锁定粒度界与表锁和行锁之间,并发一般。存储引擎总结如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能常用DCL语句 (持续更新)-- 显示数据库中各表的状态 引擎 大小 等show table status from medchart_context_content; show create table medchart_context_content.t_content_data;use information_schema;-- 查看数据库总占用空间select concat(round(sum(data_length/1024/1024/1024),2),"GB") as data from tables;select * from tables;show engines;-- 用户权限管理show grants for data_team;GRANT ALL PRIVILEGES ON wordpress.* TO "username"@"localhost" IDENTIFIED BY "password";--------------------- 作者:独钓恒河豚 原文:https://blog.csdn.net/frone/article/details/85096171 本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.rzxsoft.cn学习互联网营销技术请到巅云建站www.rzxsoft.cn。