mysql 数据库引擎介绍_MYSQL 数据库引擎介绍

一般来说,MySQL有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB和Berkley(BDB)。注意:不同的版本支持的引擎是有差异的。当然啦,如果你感觉自己的确技术高超,你还能够使用MySQL++来创建自己的数据库引擎,这个已经out of my knowledge,牛人可以参照MySQL++ API帮助来实现。下面逐一叙述这5种引擎各自的特性:

ISAM

ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。

MyISAM

MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。

MyISAM强调了快速读取操作,这可能就是为什么MySQL受到了Web开发如此青睐的主要原因:在Web开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。

HEAP

HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用Select表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。

InnoDB和Berkley DB

InnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MySQL++ API。在使用MySQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。

认识完了这么多的引擎,我们也知道了它们应该在什么情况下拿来应急,那么接着我们就要学会如何来更换这些引擎了。

Globle:一种最简单的方法就是更改服务器配置,直接将其设置成你所需要的引擎。这个在win下通过更改服务器安装目录下的mysql.ini中的default-storage-engine项即可,也可以通过运行MySQL Server Instance Configuration Wizard做简单的设置。

Per Table:除了全局的方法外,还有一种更灵活的配置方法,那就是按表来设置引擎,这样我们就可以把那些需要用到事务处理的表设置成InnoDB,其他设置成MyISAM,将性能提升到极致,这是不是很令人兴奋呢?设置方法也比较简单:

1、你可以在Create Table语句的最后添加扩展语句,如TYPE=MyISAM(或者ENGINE = INNODB)来指定当前标的引擎类型。也可以用Alter语句在建立表个后进行更改。当你不清楚当前数据库中各表的引擎时可以使用SHOW TABLE STATUS FROM DBname来查看。

2、使用随MySQL服务器发布同时提供的MySQL客户端来创建表,在创建时可以选择使用的存储引擎。

不同的引擎选择在不同的业务处理上,性能将有天壤之别!!

题外话:

要想服务器性能达到最佳,在配置服务器时也需要好好考虑。如果是在Win下那么可以通过运行MySQL Server Instance Configuration Wizard来设置,它将引导你设置当前服务器的类型等等信息。

还有再有大量数据需要插入的时候可以考虑使用Insert DELAYED语句(具体语法参考MySQL手册)。当一个客户端使用Insert DELAYED时,会立刻从服务器处得到一个确定。并且行被排入队列,当表没有被其它线程使用时,此行被插入。使用Insert DELAYED的另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。当然它也有其适用范围,具体参考手册。

mysql5.1中文手册 http://dev.mysql.com/doc/refman/5.1/zh/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux解压eclipse启动时无法找到jre环境的解决办法

使用软链接的方法: 1.打开终端进入到eclipse安装主目录下:mkdir jre 2.cd jre 3.ln -s /home/zhoushuo/app/jdk1.8.0_102/bin bin转载于:https://www.cnblogs.com/shuo1208/p/5927218.html

linux as5 启动mysql_Red Hat AS5进入救援模式的步骤

当因为某些原因导致无法通过正常引导进入系统,如GRUB损坏或者误删除了某些重要的系统配置文件,或者进行某些特殊的系统维护任务,例如忘记了root用户的口令需要进行重置。就需要使用Linux救援模式。(1)放入操作系统光盘(2)boot:下输…

VC使用sqlite

SQLite可以到官方站点(http://www.sqlite.org/download.html)下载:Linux,Mac OS X, Windows下的已编译文件以及源代码、帮助文档。 SQLite官方下载只提供给我们一个sqlite3.dll跟一个sqlite3.def文件,并没有提供用于VC6.0的lib文件,可以利用s…

mysql5.7.10 二进制包_MYSQL5.7二进制包的安装

mysql5.7 二进制包安装1. 下载包wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz2. 解压tar xxvf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gzmv mysql-5.7.12-linux-glibc2.5-x86_64 /usr/local/mysql3. 初始化useradd -M -s /sbin/…

easyUI文本框textbox笔记

知识点&#xff1a; 1.图标位置 Icon Align属性&#xff0c;有left和right两个&#xff1b; 2.textbox的setvalue方法&#xff0c;getvalue方法。 <div style"margin:10px 0 20px 0"><span>Select Icon Align: </span><select οnchange"$…

python代码计算字数_Python计算一个文件里字数的方法

本文实例讲述了Python计算一个文件里字数的方法。分享给大家供大家参考。具体如下&#xff1a;这段程序从所给文件中找出字数来。from string import *def countWords(s):wordssplit(s)return len(words)#returns the number of wordsfilenameopen("welcome.txt",r)#…

《A First Course in Probability》-chape4-离散型随机变量-几种典型分布列

超几何分布&#xff1a; 超几何分布基于这样一个模型&#xff0c;一个坛子中有N个球&#xff0c;其中m个白球&#xff0c;N-m个黑球&#xff0c;从中随机取n(不放回)&#xff0c;令X表示取出来的白球数&#xff0c;那么&#xff1a; 我们称随机变量X满足参数为(n,m,M)的超几何分…

sid更新 续订sas软件_顶级统计软件sas9.4 64位sid 有效期至2017年6月底

去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉去掉[_SID_]Version9.4Revision9.4Platform_longMicrosoft Windows Workstation for x64Platform_shortwx6Order9BHX96License_prodSASSetnumid1200146…

农历01

1、NongLi.cpp // NongLi.cpp : Defines the entry point for the console application. //#include <stdio.h> #include "xDate.h"// http://www.chinapyg.com/forum.php?modviewthread&tid2928int main(int argc, char* argv[]) {xDate *dateX new xDa…

java内联_JAVA中的内联函数

在说内联函数之前&#xff0c;先说说函数的调用过程。调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址&#xff0c;将函数的程序内容执行完后&#xff0c;再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址&#xff0…

两端对齐布局与text-align:justify

百分比实现 首先最简单的是使用百分比实现&#xff0c;如下一个展示列表&#xff1a; 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title></title>6 <style type"text/cs…

java拆分单元格_Java 拆分Excel单元格数据为多列

一、概述及使用工具在Excel表格里面&#xff0c;可设置将单元格中的文本数据按分隔符拆分为多列&#xff0c;下面通过Java程序来介绍具体实现方法。这里使用Free Spire.XLS for Java(免费版)来实现数据分列&#xff0c;需要导入Spire.Xls.jar文件到Java程序&#xff0c;可参考以…

win10下安装centos7双系统

国庆最后一天了&#xff0c;闲来无事装个双系统&#xff0c;用虚拟机的linux总有些不方便。 window下安装linux双系统有两中方法&#xff1a; 1.U盘安装 &#xff08;我采用的方法&#xff0c;后面详述&#xff09; 2.EasyBCD工具安装 &#xff08;使用EasyBCD完美实现Windows7…

css 相对定位与绝对定位

相对定位的规律&#xff1a; 使用相对定位的盒子&#xff0c;会相对于它原来的位置&#xff0c;通过偏移指定的距离&#xff0c;到达新的位置。 使用相对定位的盒子仍在标准流中&#xff0c;它对父亲和兄弟盒子都没有任何影响。 绝对定位的规律&#xff1a; 使用绝对定位的盒子…

java swing进度条_Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)

本文将讲解如何做一个类似MyEclipse启动画面的闪屏&#xff0c;为Java Swing应用程序增添魅力。首先看一下效果图吧&#xff0c;原理很简单&#xff0c;就是创建一个Dialog&#xff0c;Dialog有一个进度条和一个Label用来分别显示进度和进度信息&#xff0c;而Dialog的宽度和高…

java excel 模板 替换_JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签...

个人说明&#xff1a;为了简单实现导出数据较少的EXCEL(根据自定义书签模板)一、替换Excel表格标签方法/*** 替换Excel模板文件内容* param map* 需要替换的标签建筑队形式* param intPath* Excel模板文件路径* param outPath* Excel生成文件路径*/public static boolean repla…

【JZOJ4817】【NOIP2016提高A组五校联考4】square

题目描述 输入 输出 样例输入 3 4 1 1 0 1 0 1 1 0 0 1 1 0 5 1 1 2 3 2 1 3 2 3 2 3 4 1 1 3 4 1 2 3 4 样例输出 1 1 1 2 2 数据范围 解法 设f[i][j]为以(i,j)为右下角的正方形的最大边长。 则f[i][j]min(f[i−1][j],f[i−1][j−1],f[i][j−1])1(a[i][j]1) 考虑…

java单例模式 uml_Java设计模式系列之单例模式

单例模式的定义一个类有且仅有一个实例&#xff0c;并且自行实例化向整个系统提供。比如&#xff0c;多程序读取一个配置文件时&#xff0c;建议配置文件时&#xff0c;建议配置文件封装成对象。会方便操作其中的数据&#xff0c;又要保证多个程序读到的是同一个配置文件对象&a…

Linux安全基础:grep命令的使用

grep &#xff08;缩写来自Globally search a Regular Expression and Print&#xff09;是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。 grep的工作方式是这样的&#xff0c;它在…

oschina mysql limit_Mysql中limit的用法

Mysql中limit的用法&#xff1a;在我们使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;这个时候怎么办呢?不用担心&#xff0c;mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句…