Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32034
  • 博文数量: 9
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-02 00:25
文章分类
文章存档

2015年(1)

2013年(7)

2012年(1)

我的朋友

分类: Mysql/postgreSQL

2013-09-06 18:19:52

ALTER DATABASE Syntax

ALTER { DATABASE | SCHEMA } [ db_name ] [ DEFAULT ] CHARACTER SET [ = ] charset_name | [ DEFAULT ] COLLATE [ = ] collation_name

ALTER { DATABASE | SCHEMA } db_name UPGRADE DATA DIRECTORY NAME

ALTER DATABASEY允许修改库的所有特性,这些特性被存储在db.opt文件中,要使用ALTER DATABASE 你需要具有ALTER权限。ALTER SCHEMA与之类似。

在第一个语法中数据库名可以被省略,这个时候应用的是默认数据库。

CHARACTER SET子句改变数据库的字符集,COLLATE 修改数据库的字符排序规则。

要知道有那些字符集和字符排序可用,可以通过SHOW CHARACTER SETSHOW COLLATION语句查看。也可以通过SHOW CREATE DATABASE查看数据库的字符集。

如果库默认字符集和字符排序被改变,存储程序也需要重建。

当从老版本升级到MySQL5.1后可以使用UPGRADE DATA DIRECTORY NAME子句更新数据库与数据目录的映射码。

该子句只有在以下几个条件下使用:

当从老版本升级到5.1及之后的版本时

将数据库目录名更新当前的编码格式,并且包含需要编码的特别字符。

使用了mysqlcheck(被mysql_upgrade调用)语句



ALTER EVENT Syntax

ALTER [ DEFINER = { user | CURRENT_USER } ] EVENT event_name

[ ON SCHEDULE schedule ]

[ ON COMPLETION [ NOT ] PRESERVE ]

[ RENAME TO new_event_name ]

[ ENABLE | DISABLE | DISABLE ON SLAVE ]

[ COMMENT ‘comment’]

[ DO event_body ]

ALTER EVENT实现对已知事件的一个或多个特性的修改而非对其删除重建,其中DEFINER, ON SCHEDULE,ON COMPLETION,COMMENT, ENABLE/DISABLEDO子句在CREATE EVENT 子句中同样被使用。

任何有EVENT权限的用户都可以改动数据库上的事件定义,当语句执行成功是,用户便成为该事件的定义者。

ExCREATE EVENT my_event

        ON SCHEDULE

            EVERY 6 HOUR

        COMMENT ‘A sample comment.’

        DO

           UPDATE my_schema.my_table SET my_col = my_col + 1

修改计划的时间:

ALTER EVENT my_event

ON SCHEDULE

    EVERY 6 HOUR

START CURRENT_TIMESTAMP + INTERVAL 4 HOUR;

修改计划时间和执行的动作:

ALTER EVENT my_event

ON SCHEDULE

    AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

    TRUNCATE TABLE my_schema.my_table;

ALTER EVENT中明确指定那些想要改变的特性;省略项将保留原有值。

ALTER EVENT my_event

DISABLE

ON SCHEDULE子句可以使用MySQL内建的函数和用户定义的变量来获取时间戳和间隔,你不可以使用存储过程和用户定义函数,也不可以使用任何表作参考。

不过,可以使用SELECT FROM DUAL ,该语句可用于ALTER EVENTCREATE EVENT中。

重命名事件:

ALTER EVENT my_event

RENAME TO you_event;

将事件移到其他库:

ALTER EVENT old_db.my_event

RENAME TO new_db.my_event;

DISABLE ON SLAVE 表示在主库上创建的事件被复制到从库后不执行。


ALTER LOGFILE GROUP Syntax

ALTER LOGFILE GOURP log_file_group

ADD UNDOFILE ‘file_name’

[ INITIAL_SIZE [ = ] size ]

[ WAIT ]

ENGINE [ = ] engine_name

    该语句为已知的日志文件组添加undo文件名,ALTER LOGFILE GOURP后面仅能跟一个ADD UNDOFILE子句,当前不支持DROP UNDOFILE子句。

    注:所有的MySQL磁盘数据对象群集共享一个空间名,这意味着每一个磁盘数据对象必须有一个唯一名,比如,不能对表空间和undo log文件,或者undo log 文件和数据文件使用相同名。

INITIAL_SIZE参数设置UNDO文件的初始化尺寸,如果不特别指明,默认为128M, 也可以指定GGB),在32位系统上,最大的支持的4G,最小值为1M

ENGINE决定日志组被哪种存储引擎使用,目前仅支持NDBCLUSTERNDB,这两个值等同的。

这里假设已经通过CREATE LOGFILE GROUP创建日志文件组lg_3

ALTER LOGFILE GROUP lg_3

    ADD UNDOFILE ‘undo_10.dat’

    INITIAL_SIZE=32M

    ENGINE=NDBCLUSTER;

当日志组使用ENGINE=NDBCLUSTER,会在MySQL每一个集群节点上创建UNDO 日志文件,你可以通过INFORMATION_SCHEMA.FILES表验证这些UNDO文件是否被创建并并获取相应的信息

mysql> SELECT FILE_NAME, LOGFILE_GROUP_NUMBER,EXTRA

     > FROM INFROMATION_SCHEMA.FILES

     > WHERE LOGFILE_GROUP_NAME = ‘lg_3’;

从全局池中使用UNDO_BUFFER_SIZE的内存大小取决于数据节点的SharedGlobalMemory配置,其默认值受InitialLogFileGroup数据节点配置的影响。

ALTER LOGFILE GROUP仅在MySQL集群的磁盘数据存储中使用。


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