分类: 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 SET和SHOW 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/DISABLE和DO子句在CREATE EVENT 子句中同样被使用。
任何有EVENT权限的用户都可以改动数据库上的事件定义,当语句执行成功是,用户便成为该事件的定义者。
Ex:CREATE 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 EVENT和CREATE 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, 也可以指定G(GB),在32位系统上,最大的支持的4G,最小值为1M
ENGINE决定日志组被哪种存储引擎使用,目前仅支持NDBCLUSTER和NDB,这两个值等同的。
这里假设已经通过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集群的磁盘数据存储中使用。