mysql定时备份脚本脚本解释,请解释各句的含义及作用,谢谢!

您所在的位置: &
MySQL数据库存储引擎的概念与用途
MySQL数据库存储引擎的概念与用途
我们今天主要向大家描述的是MySQL数据库中的存储引擎的实际应用以及对MySQL数据库中的存储引擎的概念,以下就是文章的详细内容。
以下的文章主要讲述的是数据库中的存储引擎的实际应用以及对MySQL数据库中的存储引擎的概念的具体描述,同时本文也对如何确定有哪些存储引擎可用不可用的方法与使用一个指定的存储引擎的具体方案介绍。
存储引擎是什么?
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。遗憾的是,其它类型的数据库解决方案采取的&一个尺码满足一切需求&的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了。
在这篇文章中,我们不准备集中讨论不同的存储引擎的技术方面的问题(尽管我们不可避免地要研究这些因素的某些方面),相反,我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎。为了实现这个目的,在介绍每一个存储引擎的具体情况之前,我们必须要了解一些基本的问题。
如何确定有哪些存储引擎可用
你可以在MySQL(假设是MySQL服务器4.1.2以上版本)中使用显示引擎的命令得到一个可用引擎的列表。
mysql&show&& &+------------+---------+----------------------------------------------------+& &|&Engine&|&Support&|&Comment&|& &+------------+---------+-----------------------------------------------------+& &|&MyISAM&|&DEFAULT&|&Default&engine&as&of&MySQL&3.23&with&great&performance&|& &|&HEAP&|&YES&|&Alias&for&MEMORY&|& &|&MEMORY&|&YES&|&Hash&based,&stored&in&memory,&useful&for&temporary&tables&|& &|&MERGE&|&YES&|&Collection&of&identical&MyISAM&tables&|& &|&MRG_MYISAM&|&YES&|&Alias&for&MERGE&|& &|&ISAM&|&NO&|&Obsolete&storage&engine,&now&replaced&by&MyISAM&|& &|&MRG_ISAM&|&NO&|&Obsolete&storage&engine,&now&replaced&by&MERGE&|& &|&InnoDB&|&YES&|&Supports&transactions,&row-level&locking,&and&foreign&keys&|& &|&INNOBASE&|&YES&|&Alias&for&INNODB&|& &|&BDB&|&NO&|&Supports&transactions&and&page-level&locking&|& &|&BERKELEYDB&|&NO&|&Alias&for&BDB&|& &|&NDBCLUSTER&|&NO&|&Clustered,&fault-tolerant,&memory-based&tables&|& &|&NDB&|&NO&|&Alias&for&NDBCLUSTER&|& &|&EXAMPLE&|&NO&|&Example&storage&engine&|& &|&ARCHIVE&|&NO&|&Archive&storage&engine&|& &|&CSV&|&NO&|&CSV&storage&engine&|& &+------------+---------+-------------------------------------------------------+& &
16 rows in set (0.01 sec) 这个表格显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎。
对于MySQL 4.1.2以前版本,可以使用mysql& show variables like &have_%&(显示类似&have_%&的变量):
mysql&show&variables&like&&have_%&;& &+------------------+----------+& &|&Variable_name&|&Value&|& &+------------------+----------+& &|&have_bdb&|&YES&|& &|&have_crypt&|&YES&|& &|&have_innodb&|&DISABLED&|& &|&have_isam&|&YES&|& &|&have_raid&|&YES&|& &|&have_symlink&|&YES&|& &|&have_openssl&|&YES&|& &|&have_query_cache&|&YES&|& &+------------------+----------+& &8&rows&in&set&(0.01&sec)& &
你可以通过修改设置脚本中的选项来设置在MySQL安装软件中可用的引擎。如果你在使用一个预先包装好的MySQL二进制发布版软件,那么,这个软件就包含了常用的引擎。然而,需要指出的是,如果你要使用某些不常用的引擎,特别是CSV、 RCHIVE(存档)和BLACKHOLE(黑洞)引擎,你就需要手工重新编译MySQL源码 。
使用一个指定的存储引擎
你可以使用很多方法指定一个要使用的存储引擎。最简单的方法是,如果你喜欢一种能满足你的大多数数据库需求的存储引擎,你可以在MySQL设置文件中设置一个默认的引擎类型(使用 storage_engine 选项)或者在启动数据库服务器时在命令行后面加上--default-storage-engine或--default-table-type选项。
更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎。最直接的方式是在创建表时指定存储引擎的类型,向下面这样:
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
你还可以改变现有的表使用的存储引擎,用以下语句:
ALTER TABLE mytable ENGINE = MyISAM
然而,你在以这种方式修改表格类型的时候需要非常仔细,因为对不支持同样的索引、字段类型或者表大小的一个类型进行修改可能使你丢失数据。如果你指定一个在你的当前的数据库中不存在的一个存储引擎,那么就会创建一个MyISAM(默认的)类型的表。
各存储引擎之间的区别
为了做出选择哪一个存储引擎的决定,我们首先需要考虑每一个存储引擎提供了哪些不同的核心功能。这种功能使我们能够把不同的存储引擎区别开来。我们一般把这些核心功能分为四类:支持的字段和数据类型、锁定类型、索引和处理。一些引擎具有能过促使你做出决定的独特的功能,我们一会儿再仔细研究这些具体问题。
字段和数据类型
虽然所有这些引擎都支持通用的数据类型,例如整型、实型和字符型等,但是,并不是所有的引擎都支持其它的字段类型,特别是BLOG(二进制大对象)或者TEXT文本类型。其它引擎也许仅支持有限的字符宽度和数据大小。
这些局限性可能直接影响到你可以存储的数据,同时也可能会对你实施的搜索的类型或者你对那些信息创建的索引产生间接的影响。这些区别能够影响你的应用程序的性能和功能,因为你必须要根据你要存储的数据类型选择对需要的存储引擎的功能做出决策。
数据库引擎中的锁定功能决定了如何管理信息的访问和更新。当数据库中的一个对象为信息更新锁定了,在更新完成之前,其它处理不能修改这个数据(在某些情况下还不允许读这种数据)。
锁定不仅影响许多不同的应用程序如何更新数据库中的信息,而且还影响对那个数据的查询。这是因为查询可能要访问正在被修改或者更新的数据。总的来说,这种延迟是很小的。大多数锁定机制主要是为了防止多个处理更新同一个数据。由于向数据中插入信息和更新信息这两种情况都需要锁定,你可以想象,多个应用程序使用同一个数据库可能会有很大的影响。
不同的存储引擎在不同的对象级别支持锁定,而且这些级别将影响可以同时访问的信息。得到支持的级别有三种:表锁定、块锁定和行锁定。支持最多的是表锁定,这种锁定是在MyISAM中提供的。在数据更新时,它锁定了整个表。这就防止了许多应用程序同时更新一个具体的表。这对应用很多的多用户数据库有很大的影响,因为它延迟了更新的过程。
页级锁定使用Berkeley DB引擎,并且根据上载的信息页(8KB)锁定数据。当在数据库的很多地方进行更新的时候,这种锁定不会出现什么问题。但是,由于增加几行信息就要锁定数据结构的最后8KB,当需要增加大量的行,也别是大量的小型数据,就会带来问题。
行级锁定提供了最佳的并行访问功能,一个表中只有一行数据被锁定。这就意味着很多应用程序能够更新同一个表中的不同行的数据,而不会引起锁定的问题。只有InnoDB存储引擎支持行级锁定。
建立索引在搜索和恢复数据库中的数据的时候能够显著提高性能。不同的存储引擎提供不同的制作索引的技术。有些技术也许会更适合你存储的数据类型。
有些存储引擎根本就不支持索引,其原因可能是它们使用基本表索引(如MERGE引擎)或者是因为数据存储的方式不允许索引(例如FEDERATED或者BLACKHOLE引擎)。
事务处理功能通过提供在向表中更新和插入信息期间的可靠性。这种可靠性是通过如下方法实现的,它允许你更新表中的数据,但仅当应用的应用程序的所有相关操作完全完成后才接受你对表的更改。例如,在会计处理中每一笔会计分录处理将包括对借方科目和贷方科目数据的更改,你需要要使用事务处理功能保证对借方科目和贷方科目的数据更改都顺利完成,才接受所做的修改。如果任一项操作失败了,你都可以取消这个事务处理,这些修改就不存在了。如果这个事务处理过程完成了,我们可以通过允许这个修改来确认这个操作。
&【责任编辑: TEL:(010)】
关于的更多文章
MySQL是完全网络化的跨平台关系型数据库系统,同时是具有客户机/
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
讲师: 37人学习过讲师: 7人学习过讲师: 55人学习过
暮春三月,京师草长,杂花生树,群莺乱飞。ChinaHadoo
MySQL 5.6.10已经发布,Oracle将其称之为MySQL 5.6正
51CTO将为您整理数据清洗方面的技术文章和相关资料,
本书分为8章。第1章主要对XML做了简单的介绍。第2章详细讲解规范的XML文件。第3章主要讲解有效的XML文件,特别重点讲解DTD文件。
51CTO旗下网站求高手解释一下Wincc c脚本含义!感谢 - 中国亿万电器网 - Powered by LeadBBS 6.0
loading...
loading...
+26魅力24积分593经验5887文章100注册
求高手解释一下Wincc c脚本含义!感谢
#include &apdefap.h&
int gscAction( void )
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction &DMTagName&
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction &PictureName&
// next PicID : 1
// WINCC:PICNAME_SECTION_END
a=GetTagFloat(&压机主速度&);
b=GetTagFloat(&去压后速度叠加值&);
SetTagFloat(&铺装线设定速度&,a);//去铺装
SetTagFloat(&压机速度&,c);//去压后
+527魅力526积分3146经验24728文章419注册
这是一个全局动作。//是自带的后面是注释,前面是定义变量名,后面是画面名,下面是自定义变量,先获得变量值再设定变量值。符号变量要了解工艺。
+257魅力252积分1878经验13954文章258注册
2楼是专家,解释的很清楚。
学习了,谢谢!
+56魅力56积分550经验6225文章110注册
定义3个临时浮点数变量a、b、c
a=压机主速度
b=去压后速度叠加值
c=a+b,即=压机主速度+去压后速度叠加值&
然后设定wincc的外部变量(也有可能是内部变量)
铺装线设定速度=a,即=压机主速度
压机速度=c,即=压机主速度+去压后速度叠加值
[URL=/a/a.asp?B=302&ID=1163287&q=1&r=117585][/URL] &&
+2魅力2积分366经验3892文章138注册
1)定义三个浮点数变量:a\b\c;2)将压机主速度赋值给a,将去压后速度叠加值赋值给b;3)计算压机主速度和去压后速度叠加相加,并赋值给c;4)将a的值写入变量:铺装线设定速度;5)将a+b的值,即c值,写入变量:压机速度----完了。
+141魅力141积分798经验3410文章56注册
都是高手呀,学习学习
+1魅力1积分289经验4878文章92注册
4楼的结束的很清楚。
+26魅力24积分593经验5887文章100注册
感谢高手指点
+37魅力36积分438经验1781文章239注册
4楼的是正解!
+131魅力129积分1876经验13321文章436注册
感谢LZ的无私精神[url=][img]/note.png?name=太阳&say=PLC是用来玩的。[/img][/url]
loading...
loading...
loading...
loading...
loading...
loading...
长度不得超过255字
内容(最大25K)
是否是UBB代码
Alt+S或Ctrl+Enter快速提交
Powered by .MySQL DELETE语法使用详细解析
字体:[ ] 类型:转载 时间:
此文章主要讲述的是MySQL DELETE语法的详细解析,以及一些在实际操作中值得我们大家注意的相关事项的描述,以下就是正文的主要内容
以下的文章主要描述的是MySQL DELETE语法的详细解析,首先我们是从单表语法与多表语法的示例开始的,假如你对MySQL DELETE语法的相关内容十分感兴趣的话,你就可以浏览以下的文章对其有个更好的了解。
单表语法: 代码如下:DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name&& [WHERE where_definition]&& [ORDER BY ...]&& [LIMIT row_count]
多表语法: 代码如下:DELETE [LOW_PRIORITY] [QUICK] [IGNORE]&& tbl_name[.*] [, tbl_name[.*] ...]&& FROM table_references&& [WHERE where_definition]
代码如下:DELETE [LOW_PRIORITY] [QUICK] [IGNORE]&& FROM tbl_name[.*] [, tbl_name[.*] ...]&& USING table_references&& [WHERE where_definition]
tbl_name中有些行满足由where_definition给定的条件。MySQL DELETE用于删除这些行,并返回被删除的记录的数目。
如果您编写的DELETE语句中没有WHERE子句,则所有的行都被删除。当您不想知道被删除的行的数目时,有一个更快的方法,即使用TRUNCATE TABLE。
如果您删除的行中包括用于AUTO_INCREMENT列的最大值,则该值被重新用于BDB表,但是不会被用于MyISAM表或InnoDB表。如果您在AUTOCOMMIT模式下使用DELETE FROM tbl_name(不含WHERE子句)删除表中的所有行,则对于所有的表类型(除InnoDB和MyISAM外),序列重新编排。对于InnoDB表,此项操作有一些例外。
对于MyISAM和BDB表,您可以把AUTO_INCREMENT次级列指定到一个多列关键字中。在这种情况下,从序列的顶端被删除的值被再次使用,甚至对于MyISAM表也如此。DELETE语句支持以下修饰符:
如果您指定LOW_PRIORITY,则DELETE的执行被延迟,直到没有其它客户端读取本表时再执行。
对于MyISAM表,如果您使用QUICK关键词,则在删除过程中,存储引擎不会合并索引端结点,这样可以加快部分种类的删除操作的速度。
在删除行的过程中,IGNORE关键词会使MySQL忽略所有的错误。(在分析阶段遇到的错误会以常规方式处理。)由于使用本选项而被忽略的错误会作为警告返回。
删除操作的速度会受到一些因素的影响,这些因素在7.2.18节,“MySQL DELETE语句的速度”中进行了讨论。
在MyISAM表中,被删除的记录被保留在一个带链接的清单中,后续的INSERT操作会重新使用旧的记录位置。要重新使用未使用的空间并减小文件的尺寸,则使用OPTIMIZE TABLE语句或myisamchk应用程序重新编排表。OPTIMIZE TABLE更简便,但是myisamchk速度更快。请参见13.5.2.5节,“OPTIMIZE TABLE语法”和第7章:优化。
QUICK修饰符会影响到在删除操作中索引端结点是否合并。当用于被删除的行的索引值被来自后插入的行的相近的索引值代替时,DELETE QUICK最为适用。在此情况下,被删除的值留下来的空穴被重新使用。
未充满的索引块跨越某一个范围的索引值,会再次发生新的插入。当被删除的值导致出现未充满的索引块时,DELETE QUICK没有作用。在此情况下,使用QUICK会导致未利用的索引中出现废弃空间。下面是此种情况的举例说明:
1. 创建一个表,表中包含已编索引的AUTO_INCREMENT列。
2. 在表中插入很多记录。每次插入会产生一个索引值,此索引值被添加到索引的高端处。
3. 使用DELETE QUICK从列的低端处删除一组记录。
在此情况下,与被删除的索引值相关的索引块变成未充满的状态,但是,由于使用了QUICK,这些索引块不会与其它索引块合并。当插入新值时,这些索引块仍为未充满的状态,原因是新记录不含有在被删除的范围内的索引值。另外,即使您此后使用MySQL DELETE时不包含QUICK,这些索引块也仍是未充满的,除非被删除的索引值中有一部分碰巧位于这些未充满的块的之中,或与这些块相邻。在这些情况下,如果要重新利用未使用的索引空间,需使用OPTIMIZE TABLE。
如果您打算从一个表中删除许多行,使用DELETE QUICK再加上OPTIMIZE TABLE可以加快速度。这样做可以重新建立索引,而不是进行大量的索引块合并操作。
用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。本选项用于确保一个DELETE语句不会占用过多的时间。您可以只重复DELETE语句,直到相关行的数目少于LIMIT值为止。
如果DELETE语句包括一个ORDER BY子句,则各行按照子句中指定的顺序进行删除。此子句只在与LIMIT联用是才起作用。例如,以下子句用于查找与WHERE子句对应的行,使用timestamp_column进行分类,并删除第一(最旧的)行:
代码如下:DELETE FROM somelog&& WHERE user = 'jcole'& ORDER BY timestamp_column&& LIMIT 1;
您可以在一个DELETE语句中指定多个表,根据多个表中的特定条件,从一个表或多个表中删除行。不过,您不能在一个多表DELETE语句中使用ORDER BY或LIMIT。
table_references部分列出了包含在联合中的表。此语法在13.2.7.1节,“JOIN语法”中进行了说明。
对于第一个语法,只删除列于FROM子句之前的表中的对应的行。对于第二个语法,只删除列于FROM子句之中(在USING子句之前)的表中的对应的行。作用是,您可以同时删除许多个表中的行,并使用其它的表进行搜索: 代码如下:DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3. 或: 代码如下:DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3. 当搜索待删除的行时,这些语句使用所有三个表,但是只从表t1和表t2中删除对应的行。
以上例子显示了使用逗号操作符的内部联合,但是多表MySQL DELETE语句可以使用SELECT语句中允许的所有类型的联合,比如LEFT JOIN。
本语法允许在名称后面加.*,以便与Access相容。
如果您使用的多表MySQL DELETE语句包括InnoDB表,并且这些表受外键的限制,则MySQL优化程序会对表进行处理,改变原来的从属关系。在这种情况下,该语句出现错误并返回到前面的步骤。要避免此错误,您应该从单一表中删除,并依靠InnoDB提供的ON DELETE功能,对其它表进行相应的修改。
注释:当引用表名称时,您必须使用别名(如果已给定): 代码如下:DELETE t1 FROM test AS t1, test2 WHERE ... 进行多表删除时支持跨数据库删除,但是在此情况下,您在引用表时不能使用别名。举例说明: 代码如下:DELETE test1.tmp1, test2.tmp2 FROM test1.tmp1, test2.tmp2 WHERE ... 目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具MYSQL四个timeout参数的含义-Mysql_数据库-脚本宝典
页面导航: >
> MYSQL四个timeout参数的含义
MYSQL四个timeout参数的含义
MYSQL四个timeout参数的含义4个timeout都是为了防止某一个链接长时间占用一数据库的描述符,又不干事情,或者网络有问题没有释放这个描述符,线程阻塞种种资源浪费的情况.我们要主动的卡
MYSQL四个timeout参数的含义
4个timeout都是为了防止某一个链接长时间占用一的描述符,又不干事情,或者网络有问题没有释放这个描述符,线程阻塞种种资源浪费的情况.我们要主动的&卡&掉对端! & &
首先看看这4个timeout在5.1手册里的英文解释:
connect_timeout&
The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake.&
interactive_timeout&
The number of seconds the server waits for activity on an interactive connection before closing it.&
wait_timeout&
The number of seconds the server waits for activity on a noninteractive connection before closing it.&
net_read_timeout&
The number of seconds to wait for more data from a connection before aborting the read.&
net_write_timeout&
The number of seconds to wait for a block to be written to a connection before aborting the write.
从意思上可以理解为
connect_timeout在获取连接阶段(authenticate)起作用,
interactive_timeout和wait_timeout在连接空闲阶段(sleep)起作用,
net_read_timeout和net_write_timeout在连接繁忙阶段(query)起作用。
本文链接:
最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

我要回帖

更多关于 mysql增量备份脚本 的文章

 

随机推荐