2013年5月29日星期三

MySQL KEY_BUFFER_SIZE的tuning

网上很多关于key_buffer_size tuning的建议很多都是说看miss rate: key_reads/key_read_request, 说这个值要尽量小, 一般都要小于0.01, 否则, 就应当增大key_buffer_size.
但是在mysqlperformanceblog网上看到一篇的文章, 持不同意见, 他认为拿这个指标来tuning是完全错误的.

他觉得当前key_buffer_size设置是否恰当, 应当看key_reads的增长速率, 与当前服务器的磁盘IO能力进行对比, 因为基本上可以讲key_reads近似的看做一个随机磁盘IO(不一定, 只是近似的看做).
而key_buffer_size的大小设置到什么值才最恰当, 可以看当前key_buffer的实际占用大小.
(我觉得, 可以看Key_blocks_unused, Key_blocks_used这两个值).
当然, 是要当服务器运行一段时间稳定下来以后.
附上原文地址:

2013年5月16日星期四

Power Designer经验分享[MYSQL应用]

刚开始接触MySQL的时候就曾经使用Power Designer来生成数据字典文档, 但是当时MySQL自身的table comment以及column comment都有长度限制, 我不好直接在数据库中维护数据字典的信息, 所以也就没有使用Power Designer了.
早些时候部门要求完善现在远远跟不上现状的数据字典文档, 而且正好MySQL中comment的长度限制都放开了, 于是就在数据库中将table comment以及column comment直接维护好, 然后使用Power Designer反响工程处physical model, 然后产生出Report作为数据字典文档发放给开发人员.
遇到一些问题, 也积累了一些经验, 分享出来:
1. Power Designer对于MySQL的反向工程功能有些问题
    1) 直接连接数据反向工程速度比较慢, 而且by schema反向的时候table commet不能正确导出. 不能正确导出可以这样解决:
 Tools -> Resources -> DBMS, 选到MySQL5.0 
 在General Tab页中, Script -> Objects -> Table -> SqlListQuery, 将右边的value改为
{OWNER, TABLE,  COMMENT}
select
   t.table_schema,
   t.table_name,
   t.table_comment
from
   information_schema.tables t
where 1=1
[  and t.table_schema = %.q:SCHEMA%]
order by 1, 2
   2) 因为直接连接数据库反向工程比较慢, 所以我倾向于生成sqldump脚本以后, 再直接利用脚本反向, 但是用脚本反向, 同样的table comment也有问题, 默认反向出来的table comment是放在physical options中, 而不能单独解析出comment, 这也需要修改反向工程的脚本
Tools -> Resources -> DBMS, 选到MySQL5.0 
 在General Tab页中, Script -> Objects -> Table -> Create, 将右边的value改为
create [%Temporary%?temporary ]table[%R%?[ if not exists]] [%QUALIFIER%]%TABLE%[
(
   %TABLDEFN%
)][%R%?]
[%OPTIONS%][comment = %.q:TLABL%]
主要就是将comment一项拉到最后, 使其能够单独识别出来.
3) 另外针对sqldump的反向功能, 默认的将create table语句最后面的部分都解析到pysical option里面去了, 其实我们可以添加规则的, 只是目前对我没什么作用:
Tools -> Resources -> DBMS, 选到MySQL5.0 
 在General Tab页中, Script -> Objects -> Table -> Options
可以看到这里还是使用type来识别存储引擎, 其实mysql create table语句早就不使用type了, 可以直接将
type = %s : list = BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM, default = ISAM
替换为或者添加也可以
Engine = %s : list = BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM, default = ISAM

2. 在使用Report导出为RTF文件的时候, 可能我们需要定制自己的template文件, 我指的不是power designer里面的report template, 而是template使用的RTF文件.
这个时候可以将安装文件夹下Resource Files\RTF Report Templates种的Professional.rtf进行编辑, 添加一些自己需要的元素进去, 诸如公司logo, 页眉页脚等.
其他的也可以, 但是power designer默认使用的好像是Professioanl.rtf, 没有去研究在哪设置使用其他的.
我这边在使用这个文件的时候有点邪门, 使用word编辑这个文件之后, 生成的文档中中文总是存在一定程度的乱码, 无论怎么设定中文字体都没有, 使用自带的就没有问题. 最后解决方案是使用WPS编辑这个rtf文件.

3. 导出为Report的时候, 你可能想替换掉一些系统默认的关键词叫法, 例如Primary换成PK, Foreign Key换成FK等, 因为默认使用的名称太长, 导出为文档以后放在表格里面影响美观.
这个时候需要编辑Report Language文件.
例如我一般在导出report的时候language一般选择English, 就这样编辑
Tools -> Resources -> Report Languages, 选择English,
更改以下路径中的值:
English::Object Attributes\Physical Data Model\Column\
将Primary对应的localized name改为PK
其余对应设置.
不过注意, 这个设置的修改需要重启power designer才能起作用.