Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103727953
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-05-11 20:14:24

13.5.1.5. SET PASSWORD语法

SET PASSWORD = PASSWORD('some password')
SET PASSWORD FOR user = PASSWORD('some password')

SET PASSWORD语句用于向一个原有MySQL用户 账户赋予一个密码。

第一个语法为当前用户设置密码。已使用一个非匿名账户连接到服务器上的任何客户即都可以更改该账户的密码。

第二个语法为当前服务器主机上的一个特定账户设置密码。只有拥有mysql数据库UPDATE权限的客户端可以这么做。user值应以user_name@host_name的格式被给定,此处user_namehost_namemysql.user表登录项的UserHost列中列出的完全一样。举例说明,如果您有一个登录项,UserHost列值为'bob''%.loc.gov',您应该按如下方法写语句:

mysql> SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');

这相当于以下语句:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
    -> WHERE User='bob' AND Host='%.loc.gov';
mysql> FLUSH PRIVILEGES;

注释:如果您正在使用一个4.1以前的客户端连接到一个MySQL 4.1MySQL 4.1以后的服务器,则在阅读5.7.9节,“MySQL 4.1中的密码哈希处理”之前,不能使用前面的SET PASSWORDUPDATE语句。 密码格式在MySQL 4.1中变更了,并且在特定情况下,如果您更改密码,您可能无法在连接到服务器上。

您可以通过执行SELECT CURRENT_USER()观看您当前的鉴定user@host登录项。

13.5.2. 表维护语句

13.5.2.1. ANALYZE TABLE语法

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于MyISAM, BDBInnoDB表有作用。对于MyISAM表,本语句与使用myisamchk -a相当。

MySQL使用已存储的关键字分布来决定,当您对除常数以外的对象执行联合时,表按什么顺序进行联合。

本语句会返回一个含有以下列的表:

Table

表名称

Op

进行分析

Msg_type

状态、错误、信息或警告之一

Msg_text

消息

您可以使用SHOW INDEX语句检查已存储的关键字分布。请参见13.5.4.11节,“SHOW INDEX语法”

如果从上一个ANALYZE TABLE语句开始,表没有变化,则不再分析该表。

ANALYZE TABLE语句被写入二进制日志中,除非使用了自选的NO_WRITE_TO_BINLOG关键词(或其别名LOCAL)。

13.5.2.2. BACKUP TABLE语法

BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'

注释:本语句不理想。我们正在努力寻找一种更好的替代方式,该方式将提供在线备份能力。同时,也可以使用mysqlhotcopy原本替代。

BACKUP TABLE用于在刷新了所有对磁盘的缓冲变更后,把恢复表所需的最少数目的表文件拷贝到备份目录中。本语句只对MyISAM表起作用。它可以拷贝.frm定义文件和.MYD数据文件。.MYI索引文件可以从这两个文件中重建。本目录应被指定为一个完整的路径名。

在使用本语句前,请参见5.9.1节,“数据库备份”

在备份期间,为每个表保持一个读取锁定,每次一个,在正在备份时锁定。如果您想要把多个表作为一个快照来备份(防止它们在备份操作过程中被更改),您必须实现发布一个LOCK TABLES语句,以获得对一个组群中的每个表的读取锁定。

该语句会返回一个含有以下列的表:

Table

表名称

Op

进行备份

Msg_type

状态、错误、信息或警告之一

Msg_text

消息

13.5.2.3. CHECK TABLE语法

CHECK TABLE tbl_name [, tbl_name] ... [option] ...
 
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

检查一个或多个表是否有错误。CHECK TABLEMyISAMInnoDB表有作用。对于MyISAM表,关键字统计数据被更新。

CHECK TABLE也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。

CHECK TABLE语句会返回一个含有以下列的表:

Table

表名称

Op

进行检查

Msg_type

状态、错误、信息或错误之一

Msg_text

消息

注意,该语句可能会为每个被检查的表产生多行信息。最后一行有一个Msg_type状态值。Msg_text通常应为OK。如果您没有得到OK,或表已经更新了,则您通常应该运行修复后的表。请参见5.9.4节,“表维护和崩溃恢复”。表已经更新了,这意味着表的存储引擎指示没有必要检查表。

可以给予的不同的检查选项列于下表中。这些选项只适用于检查MyISAM表。对于InnoDB表和视图,这些选项被忽略。

类型

意义

QUICK

不扫描行,不检查错误的链接。

FAST

只检查没有被正确关闭的表。

CHANGED

只检查上次检查后被更改的表,和没有被正确关闭的表。

MEDIUM

扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。

EXTENDED

对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长。

如果没有指定QUICK, MEDIUMEXTENDED选项,则对于动态格式MyISAM表,默认检查类型是MEDIUM。这与对表运行myisamchk --medium-check tbl_name的结果相同。对于静态格式MyISAM表,默认检查类型也是MEDIUM,除非CHANGEDFAST已被指定。在此情况下,默认值为QUICK。对于CHANGEDFAST,行扫描被跳过,因为行极少被破坏。

您可以组合检查选项,如下面的例子所示。该例子对表进行了一个快速检查,来查看该表是否被正确关闭:

CHECK TABLE test_table FAST QUICK;

注释:在有些情况下,CHECK TABLE会更改表。如果表被标记为“corrupted”或“not closed properly”,则出现这种情况。但是CHECK TABLE不会找出表中的问题。在这种情况下,CHECK TABLE会把表标记为良好。

如果一个表被破坏,很有可能问题在索引中,而不在数据部分中。所有前述的检查类型都可以彻底地检查索引,因此,可以找出多数的错误。

如果您只想要检查您假定的表是良好的,您应该不使用检查选项或QUICK选项。当您时间匆忙时,应使用QUICKQUICK无法找出数据文件中的错误的风险非常小。(在多数情况下,在正常使用中,MySQL应能在数据文件中找出错误。如果找出了错误,表被标记为“corrupted”,并不能被使用,直到修复为止。)

如果您想要时常检查表,FASTCHANGED多数情况下从原本中被使用(例如,从cron中被执行)。在多数情况下,FAST优先于CHANGED。(只有一种情况FAST不优先于CHANGED,那就是当您怀疑您在MyISAM代码中发现了错误。)

MySQL试图通过关键字更新一行或查找一行时,如果您已经运行了一个常规检查后但仍得到来自表的奇怪的错误,此时使用EXTENDED。(如果常规的检查运行成功,则基本用不着EXTENDED。)

CHECK TABLE报告的部分问题不会被自动修正:

·         发现行。此行中,auto_increment列有0值。

这意味着,您在表中有一行,该行的AUTO_INCREMENT索引列包含0值。(可以通过使用UPDATE语句,明确地把列设置为0,以创建一个AUTO_INCREMENT列为0的行。)

这本身不是一个错误,但是如果您决定转储表并恢复表,或对表进行ALTER TABLE,那么会导致出现麻烦。在此情况下,AUTO_INCREMENT列会根据AUTO_INCREMENT列的结果更改值,这会导致出现问题,如重复关键字错误等。

要消除警告,只需执行一个UPDATE语句,把列设置为除0以外的值。

13.5.2.4. CHECKSUM TABLE语法

CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]

报告一个表校验和。

如果指定了QUICK,则报告活性表校验和,否则报告NULL。这是非常快的。活性表通过指定CHECKSUM1表选项启用,目前只支持用于MyISAM表。请参见13.1.5节,“CREATE TABLE语法”

EXTENDED模式下,整个表被一行一行地读取,并计算校验和。对于大型表,这是非常慢的。

默认情况下,如果既没有指定QUICK,也没有指定EXTENDED,并且如果表存储引擎支持,则MySQL返回一个活性校验和,否则会对表进行扫描。

CHECKSUM TABLE对于不存在的表会返回NULL。对于这种情况,会生成一个警告。

13.5.2.5. OPTIMIZE TABLE语法

OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOBTEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理数据文件的碎片。

在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。

OPTIMIZE TABLE只对MyISAM, BDBInnoDB表起作用。

对于MyISAM表,OPTIMIZE TABLE按如下方式操作:

1.    如果表已经删除或分解了行,则修复表。

2.    如果未对索引页进行分类,则进行分类。

3.       如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。

对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上。对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表。重建操作能更新索引统计数据并释放成簇索引中的未使用的空间。请参见13.5.2.1节,“ANALYZE TABLE语法”

使用—skip-new或—safe-mode选项可以启动mysqld。通过启动mysqld,您可以使OPTIMIZE TABLE对其它表类型起作用。

注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。

OPTIMIZE TABLE语句被写入到二进制日志中,除非使用了自选的NO_WRITE_TO_BINLOG关键词(或其别名LOCAL)。已经这么做了,因此,用于MySQL服务器的OPTIMIZE TABLE命令的作用相当于一个复制主服务器,在默认情况下,这些命令将被复制到复制从属服务器中。

13.5.2.6. REPAIR TABLE语法

REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE
    tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]

REPAIR TABLE用于修复被破坏的表。默认情况下,REPAIR TABLEmyisamchk --recover tbl_name具有相同的效果。REPAIR TABLEMyISAMARCHIVE表起作用。请参见15.1节,“MyISAM存储引擎”, 15.8节,“ARCHIVE存储引擎”

通常,您基本上不必运行此语句。但是,如果灾难发生,REPAIR TABLE很有可能从MyISAM表中找回所有数据。如果您的表经常被破坏,您应该尽力找到原因,以避免使用REPAIR TALBE。请参见A.4.2节,“如果MySQL依然崩溃,应作些什么”。同时也见15.1.4节,“MyISAM表方面的问题”

本语句会返回一个含有以下列的表:

Table

表名称

Op

进行修复

Msg_type

状态、错误、信息或警告之一

Msg_text

消息

对于每个被修复的表,REPAIR TABLE语句会产生多行的信息。上一行含有一个Msg_type状态值。Msg_test通常应为OK。如果您没有得到OK,您应该尝试使用myisamchk --safe-recover修复表,因为REPAIR TABLE尚不会执行所有的myisamchk选项。我们计划在将来使它的灵活性更强。

如果给定了QUICK,则REPAIR TABLE会尝试只修复索引树。这种类型的修复与使用myisamchk --recover --quick相似。

如果您使用EXTENDED,则MySQL会一行一行地创建索引行,代替使用分类一次创建一个索引。这种类型的修复与使用myisamchk --safe-recover相似。

对于REPAIR TABLE,还有一种USE_FRM模式可以利用。如果.MYI索引文件缺失或标题被破坏,则使用此模式。在这种模式下,MySQL可以使用来自.frm文件重新创建.MYI文件。这种修复不能使用myisamchk来完成。 注释:只能在您不能使用常规REPAIR模式是,才能使用此模式。.MYI标题包含重要的表元数据(特别是,当前的AUTO_INCREMENT值和Delete链接)。这些元数据在REPAIR...USE_FRM中丢失。如果表被压缩,则不能使用USE_FRM。因为本信息也存储在.MYI文件中。

REPAIR TABLE语句被写入二进制日志中,除非使用了自选的NO_WRITE_TO_BINLOG关键词(或其别名LOCAL)。

警告:如果在REPAIR TABLE运行过程中,服务器停机,则在重新启动之后,在执行其它操作之前,您必须立刻对表再执行一个REPAIR TABLE语句。(通过制作一个备份来启动是一个好办法。)再最不利情况下,您可以有一个新的干净的索引文件,不含有关数据文件的信息。然后,您执行的下一个操作会覆盖数据文件。这很少发生,但是是有可能的。

13.5.2.7. RESTORE TABLE语法

RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'

用于恢复来自用BACKUP TABLE制作的备份的表。原有的表不会被覆盖;如果您试图覆盖一个原有的表,会发生错误。和BACKUP TABLE一样,RESTORE TABLE目前只对MyISAM表起作用。目录应被指定为一个完整路径名。

每个表的备份包括其.frm格式文件和.MYD数据文件。恢复操作会恢复这些文件,然后使用这些文件来重建.MYI索引文件。恢复操作比备份操作花的时间更长,这是因为需要重建索引。表含有的索引越多,花的时间就越长。

该语句会返回一个含有以下列的表:

Table

表名称

Op

进行恢复

Msg_type

状态、错误、信息或警告之一

Msg_text

消息

13.5.3. SET语法

SET variable_assignment [, variable_assignment] ...
 
variable_assignment:
      user_var_name = expr
    | [GLOBAL | SESSION] system_var_name = expr
    | @@[global. | session.]system_var_name = expr

SET用于设置不同类型的变量。这些变量会影响服务器或客户端的操作。SET可以用于向用户变量或系统变量赋值。

用于分配账户密码的SET PASSWORD语句在13.5.1.5节,“SET PASSWORD语法”中进行了讨论。

多数系统变量可以在运行时间被更改。可以被动态设置的系统变量在5.3.3.1节,“动态系统变量”中进行了讨论。

注释:旧版本的MySQL采用SET OPTION作为这个命令,但是由于有了SET,现在不赞成使用SET OPTION

以下例子显示了您可以用于设置变量的不同语法。

用户变量可以被写作@var_name,并可以进行如下设置:

SET @var_name = expr;

9.3节,“用户变量”中给出了有关用户变量的更多信息。

系统变量可以被作为var_name引用到SET语句中。在名称的前面可以自选地添加GLOBAL@@global,以明确地指示该变量是全局变量。或者在名称前面添加SESSION, @@session,或@@,以指示它是一个会话变量。LOCAL@@localSESSION@@session地同义词。如果没有修改符,则SET设置会话变量。

支持系统变量的@@var_name语法,以便使MySQL语法与其它数据库系统相兼容。

如果您在同一个语句中设置多个系统变量,则最后一个GLOBALSESSION选项被用于没有指定模式的变量。

SET sort_buffer_size=10000;
SET @@local.sort_buffer_size=10000;
SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000;
SET @@sort_buffer_size=1000000;
SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;

如果您使用SESSION(默认情况)设置一个系统变量,则该值仍然有效,直到当前会话结束为止,或者直到您吧变量设置为一个不同的值为止。如果您使用GLOBAL(要求SUPER权限)来设置一个系统变量,则该值被记住,并被用于新的连接,直到服务器重新启动为止。如果您想要进行永久式变量设置,您应该把它放入一个选项文件。请参见4.3.2节,“使用选项文件”

为了防止不正确的使用,如果您使用SET GLOBAL时同时使用了一个只能与SET SESSION同时使用的变量,或者如果您在设置一个全局变量时未指定GLOBAL(或@@),则MySQL会产生一个错误。

如果您想要把一个SESSION变量设置为GLOBAL值或把一个GLOBAL值设置为内部MySQL默认值,需使用DEFAULT关键词。例如,在把max_join_size会话值设置为全局值时,以下两个语句是一样的:

SET max_join_size=DEFAULT;
SET @@session.max_join_size=@@global.max_join_size;

您可以使用SHOW VARIABLES来得到系统变量清单。(见13.5.4.21节,“SHOW VARIABLES语法”。)要获得与样式匹配的一个具体的变量名称或者名称清单,需使用LIKE子句,使用方法如下:

SHOW VARIABLES LIKE 'max_join_size';
SHOW GLOBAL VARIABLES LIKE 'max_join_size';

要得到名称与样式匹配的变量的清单,需使用通配符‘%’:

SHOW VARIABLES LIKE 'have%';
SHOW GLOBAL VARIABLES LIKE 'have%';

通配符可以被用于相匹配的样式中的任何位置。

您也可以通过使用@@[global.|local.]var_name语法和SELECT来得到值:

SELECT @@max_join_size, @@global.max_join_size;

当您使用SELECT @@var_name(即您不指定全局、会话或本地)来恢复一个变量时,则MySQL会返回SESSION值(如果存在)或者GLOBAL值。

以下清单用于描述带有非标准语法的变量,或描述在系统变量清单中(见5.3.3节,“服务器系统变量”。)中没有描述的变量。尽管这些变量没有被SHOW VARIABLES显示,但是您可以使用SELECT来获得它们的值(例外情况是,使用CHARACTER SETSET NAMES)。例如:

mysql> SELECT @@AUTOCOMMIT;
+--------------+
| @@AUTOCOMMIT |
+--------------+
|            1 |
+--------------+

·         AUTOCOMMIT = {0 | 1}

设置autocommit模式。如果设置为1,则所有对表的更改会立刻生效。如果设置为0,则您必须使用COMMIT来接受一个事务,或使用ROLLBACK来取消它。如果您把AUTOCOMMIT模式从0改为1,则MySQL会对开放事务执行一个自动COMMIT。开始一个事务的另一种方法是使用一个START TRANSACTIONBEGIN语句。请参见13.4.1节,“START TRANSACTION, COMMIT和ROLLBACK语法”

·         BIG_TABLES = {0 | 1}

如果设置为1,所有的临时表被存储在磁盘中,而不是存储在储存期中。这样会稍微慢些,但是对于需要一个大型临时表的SELECT操作,不会发生The table tbl_name is full错误。对于一个新连接,默认值为0(使用存储器内部临时表)。通常,您不必设置此变量,因为根据需要,存储器内部表会被自动转换为以磁盘为基础的表。( 注释:本变量以前被命名为SQL_BIG_TABLES。)

·         CHARACTER SET {charset_name | DEFAULT}

本语句使用给定的映射为所有来自客户端和指向客户端的字符串建立映射。您可以通过在MySQL源分布中编辑sql/convert.cc来添加新的映射。SET CHARACTER SET用于设定三个会话系统变量:character_set_clientcharacter_set_results被设置为给定的字符集,character_set_connection被设置为character_set_database值。

可以通过使用DEFAULT值恢复默认的映射。

注意,SET CHARACTER SET的语法与设置其它选项的语法不同。

·         FOREIGN_KEY_CHECKS = {0 | 1}

如果设置为1(默认情况),则检查InnoDB表的外键限制条件。如果设置为0,则限制条件被忽略。如果重新载入InnoDB表时按照的顺序与上级/下级目录所要求的顺序不同,此时禁用外键检查是有用的。请参见15.2.6.4节,“FOREIGN KEY约束”

·         IDENTITY = value

该变量是LAST_INSERT_ID变量的同义词。该变量的作用是保持与其它数据库兼容。您可以使用SELECT @@IDENTITY读取其值,并可以使用SET IDENTITY设置它。

·         INSERT_ID = value

用于设置将被以下INSERTALTER TABLE语句使用的值。此值在插入一个AUTO_INCREMENT值时使用。本语句主要和二进制日志同时使用。

·         LAST_INSERT_ID = value

用于设定将从LAST_INSERT_ID()被返回的值。当您在用于更新表的语句中使用LAST_INSERT_ID()时,它被存储在二进制日志中。设置此变量不会更新由mysql_insert_id() C API函数返回的值。

·         NAMES {'charset_name' | DEFAULT}

SET NAMES用于把三个会话系统变量character_set_client, character_set_connectioncharacter_set_results设置为给定的字符集。把character_set_connection设置为charset_name时,同时把collation_connection设置为charset_name的默认整序。

使用一个DEFAULT值可以恢复默认的映射。

注意,SET NAMES的语法与用于设置其它选项的语法不同。

·         ONE_SHOT

这不是一个服务器系统变量,但是它可以被用来影响用于设置字符集、整序和时区的变量的效果。ONE_SHOT主要被用于复制:mysqlbinlog使用SET ONE_SHOT来暂时地修改字符集、整序和时区变量的值,以反映出它们原先的值。

您不能在使用ONE_SHOT时使用除允许的变量以外的变量;如果您这么做,您会得到如下错误:

mysql> SET ONE_SHOT max_allowed_packet = 1;
ERROR 1382 (HY000): The 'SET ONE_SHOT' syntax is reserved for purposes internal to the MySQL server 

如果同时使用ONE_SHOT和被允许的变量,则会根据要求更改变量,但是会在下一个语句后,重新设置所有的字符集、整序和与时区有关的服务器系统变量。唯一的例外是,当下一个语句是SET语句时,不会进行重新设置。换句话说,在下一个非SET语句之后,才会进行重新设置。例如:

mysql> SET ONE_SHOT character_set_connection = latin5;
 
mysql> SET ONE_SHOT collation_connection = latin5_turkish_ci;
 
mysql> SHOW VARIABLES LIKE '%_connection';
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| character_set_connection | latin5            |
| collation_connection     | latin5_turkish_ci |
+--------------------------+-------------------+
 
mysql> SHOW VARIABLES LIKE '%_connection';
+--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| character_set_connection | latin1            |
| collation_connection     | latin1_swedish_ci |
+--------------------------+-------------------+

·         SQL_NOTES = {0 | 1}

当设置为1时(默认情况),“注意”一级的警报被记录下来。当设置为0时,“注意”警告被压制。Mysqldump包含输出,用于把此变量设置为0,这样,对于不会影响重新载入操作整体性的事件,重新载入转储文件时不会产生警告。

·         SQL_AUTO_IS_NULL = {0 | 1}

如果设置为1(默认情况),您可以通过使用以下结构查找包含一个AUTO_INCREMENT列的表的最后插入的行:

WHERE auto_increment_column IS NULL

此性质被有些ODBC程序,比如Access使用。

·         SQL_BIG_SELECTS = {0 | 1}

如果设定为0,则MySQL会放弃有可能会花很长时间来执行的SELECT语句(也就是,对于这些语句,优化程序估算被检查的行的数目超过了max_join_size的值)。当一个不妥当的WHERE语句被发布后,本语句有用。一个新连接的默认值为1,这可以允许所有的SELECT语句。

如果您把max_join_size系统变量设置为除DEFAULT以外的值,则SQL_BIG_SELECTS被设置为0

·         SQL_BUFFER_RESULT = {0 | 1}

SQL_BUFFER_RESULT会迫使来自SELECT语句的结果被放入临时表中。这可以帮助MySQL早点解除表锁定。当需要花较长时间把结果发送给客户端时,这是有好处的。

·         SQL_LOG_BIN = {0 | 1}

如果设置为0,则客户端的二进制日志中不会记录日志。客户端必须拥有SUPER权限来设置此选项。

·         SQL_LOG_OFF = {0 | 1}

如果设置为1,则此客户端的总查询日志中不会记录日志。客户端必须拥有SUPER权限来设置此选项。

·         SQL_LOG_UPDATE = {0 | 1}

不赞成使用本变量。本变量被映射到SQL_LOG_BIN

·         SQL_QUOTE_SHOW_CREATE = {0 | 1}

如果设置为1,则SHOW CREATE TABLE会对表和列的名称加引号。如果设置为0,则加引号操作被禁用。默认情况下,本选项被启用,因此对于含有需要加引号的名称的表,复制操作起作用。请参见13.5.4.5节,“SHOW CREATE TABLE语法”

·         SQL_SAFE_UPDATES = {0 | 1}

如果设置为1,则MySQL会放弃在WHERE子句或LIMIT子句中不使用关键字的UPDATEDELETE语句。这样,当关键字使用不正确时,也有可能理解UPDATEDELETE语句。这样就可以更改或删除大量的行。

·         SQL_SELECT_LIMIT = {value | DEFAULT}

SELECT语句返回的记录的最大数目。对于一个新连接,默认值是“unlimited”。如果您更改了限值,可以使用SQL_SELECT_LIMIT DEFAULT值恢复默认值。

如果SELECT有一个LIMIT子句,则LIMIT优先于SQL_SELECT_LIMIT值。

SQL_SELECT_LIMT不适用于在被存储的子程序中执行的SELECT语句。它也不适用于不会产生将被返回到客户端的结果集合的SELECT语句。这些包括子查询中的SELECT语句,CREATE TABLE...SELECTINSERT INTO...SELECT

·         SQL_WARNINGS = {0 | 1}

本变量用于控制当出现警告时,单行INSERT语句是否产生一个信息字符串。默认值为0。把值设置为1,来产生一个信息字符串。

·         TIMESTAMP = {timestamp_value | DEFAULT}

用于为此客户端设置时间。当您使用二进制日志来恢复行时,本语句用于得到原始的时间标记。timestamp_value应为一个Unix时间标记,而不是MySQL时间标记。

·         UNIQUE_CHECKS = {0 | 1}

如果设置为1(默认情况),则会对InnoDB表中的二级索引执行唯一性检查。如果设置为0,则对于被插入到InnoDB的插入缓冲器中的索引登录项,不执行唯一性检查。如果您可以肯定您的数据不违反唯一性要求,则您可以把此值设定为0,以加快向InnoDB导入大型表的速度。

阅读(512) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~