仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 870|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之MySql数据库拔出式的多存储引擎机制

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
列举选择MySQL的理由的最困难的地方在于,如何对这些理由进行排序。MySQL学习教程这就如同我们经常争论的故事:先有鸡还是先有蛋?</p>甚么是MySql数据库?
一般意义上,数据库也就是数据的汇合,详细到盘算机上数据库能够是存储器上一些文件的汇合大概一些内存数据的汇合。
我们一般说的MySql数据库,sqlserver数据库等等实际上是数据库办理体系,它们能够存储数据,并供应查询和更新数据库中的数据的功效等等。依据数据库怎样存储数据和怎样操纵数据的完成机制分歧,这些数据库之间即有区分又有配合点。
MySql数据库是开放源代码的干系型数据库。今朝,它能够供应的功效有:撑持sql言语、子查询、存储历程、触发器、视图、索引、事件、锁、外键束缚和影象复制等。在前期,我们会具体解说这些功效。
同Oracle和SQLServer等年夜型数据库体系一样,MySql也是客户/服务器体系而且是单历程多线程架构的数据库。
MySql区分于别的数据库体系的一个主要特性是撑持拔出式存储引擎。
那末甚么是存储引擎呢?
存储引擎说白了就是怎样存储数据、怎样为存储的数据创建索引和怎样更新、查询数据等手艺的完成办法。由于在干系数据库中数据的存储是以表的情势存储的,以是存储引擎也能够称为表范例(即存储和操纵此表的范例)。
在Oracle和SQLServer等数据库中只要一种存储引擎,一切数据存储办理机制都是一样的。而MySql数据库供应了多种存储引擎。用户能够依据分歧的需求为数据表选择分歧的存储引擎,用户也能够依据本人的必要编写本人的存储引擎。
MySql中有哪些存储引擎?
1MyISAM:这类引擎是mysql最早供应的。这类引擎又能够分为静态MyISAM、静态MyISAM和紧缩MyISAM三种:
静态MyISAM:假如数据表中的各数据列的长度都是事后流动好的,服务器将主动选择这类表范例。由于数据表中每笔记录所占用的空间都是一样的,以是这类表存取和更新的效力十分高。当数据受损时,恢停工作也对照简单做。
静态MyISAM:假如数据表中呈现varchar、xxxtext或xxxBLOB字段时,服务器将主动选择这类表范例。相对静态MyISAM,这类表存储空间对照小,但因为每笔记录的长度纷歧,以是屡次修正数据后,数据表中的数据便可能团圆的存储在内存中,进而招致实行效力下落。同时,内存中也大概会呈现良多碎片。因而,这类范例的表要常常用optimizetable命令或优化工具来举行碎片收拾。
紧缩MyISAM:以上说到的两品种型的表都能够用myisamchk工具紧缩。这类范例的表进一步减小了占用的存储,可是这类表紧缩以后不克不及再被修正。别的,由于是紧缩数据,以是这类表在读取的时分要先时行解紧缩。
可是,不论是何种MyISAM表,今朝它都不撑持事件,行级锁和外键束缚的功效。
2MyISAMMerge引擎:这类范例是MyISAM范例的一种变种。兼并表是将几个不异的MyISAM表兼并为一个虚表。常使用于日记和数据堆栈。
3InnoDB:InnoDB表范例能够看做是对MyISAM的进一步更新产物,它供应了事件、行级锁机制和外键束缚的功效。
4memory(heap):这类范例的数据表只存在于内存中。它利用散列索引,以是数据的存取速率十分快。由于是存在于内存中,以是这类范例常使用于一时表中。
5archive:这类范例只撑持select和insert语句,并且不撑持索引。常使用于日记纪录和聚合剖析方面。
固然MySql撑持的表范例不止下面几种。
上面我们先容一下怎样检察和设置数据表范例。
MySql中关于存储引擎的操纵
1检察数据库能够撑持的存储引擎
用showengines;命令能够显现以后数据库撑持的存储引擎情形,如所示:



数据库的存储引擎

由上图可见以后体系的默许数据表范例是MyISAM。固然,我们能够经由过程修正数据库设置文件中的选项,设定默许表范例。
2检察表的布局等信息的多少命令
要检察表的界说布局等信息可使用以下几种命令:
2.1Desc[ribe]tablename;//检察数据表的布局
比方,检察表t1的布局,可得下图。



:检察表t1的布局

2.2Showcreatetabletablename;//显现表的创立语句
同上查询表t1,得下图:



显现创立表t1的语句

2.3showtablestatuslike‘tablename’G显现表确当前形态值
同上查询表t1,得下图:



显现表t1确当前形态值

综上可见,后两种体例都能够匡助我们检察某一表的存储引擎范例(图中已用白色方框标出)。
3设置或修正表的存储引擎
3.1创立数据库表时设置存贮存储引擎的基础语法是:


  • CreatetabletableName(
  • columnName(列名1)type(数据范例)attri(属性设置),
  • columnName(列名2)type(数据范例)attri(属性设置),
  • ……..)engine=engineName
比方,假定要创立一个名为user的表,此表包含id,用户名username和性别sex三个字段,而且要设置表范例为merge。则可用以下的体例创立此数据表,


  • createtableuser(
  • idintnotnullauto_increment,
  • usernamechar(20)notnull,
  • sexchar(2),
  • primarykey(id)
  • )engine=merge
详细实行了局见下图:



创立表user

检察创立后表user的信息,可见表确当前存储引擎是merge,如图所示:



显现表t1确当前形态值

3.2修正存储引擎,能够用命令AltertabletableNameengine=engineName
假设,若必要将表user的存储引擎修正为archive范例,则可以使用命令altertableuserengine=archive。以下图所示:



修正表user的存储引擎

检察修正后的表范例,可见表范例已变成archive范例。



显现表user修正后的形态值

小结
在本文中次要先容了甚么是MySql数据库,并进一步引出了它的一个主要特征,即拔出式的多存储引擎机制。然后,复杂先容了甚么是存储引擎和MySql中几种次要的存储引擎。最初,先容了怎样检察数据库撑持的一切存储引擎,怎样检察数据库表的存储引擎范例及怎样设置或修正表的存储引擎范例。方才进门进修MySql,文中有毛病的地方,还请人人多多引导!
如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 05:26:46 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
小女巫 该用户已被删除
板凳
发表于 2015-1-27 12:54:28 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
小魔女 该用户已被删除
地板
发表于 2015-2-5 10:57:19 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
山那边是海 该用户已被删除
5#
发表于 2015-2-11 11:34:44 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
金色的骷髅 该用户已被删除
6#
发表于 2015-3-2 12:37:04 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
若天明 该用户已被删除
7#
发表于 2015-3-11 04:08:07 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
小妖女 该用户已被删除
8#
发表于 2015-3-17 20:46:52 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
不帅 该用户已被删除
9#
 楼主| 发表于 2015-3-25 01:49:07 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 10:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表