Submitted by yejr on 周五, 2008/04/18 - 11:22
一、试验
从手册的"6.4.8. How MySQL Opens and Closes Tables"可以了解到,每打开一个MyISAM表,就需要使用2个文件描述符,咱们来验证一下。
1. 重启mysqld
/etc/init.d/mysql restart
2. 看看打开了几个文件
lsof | grep /home/mysql
...
Submitted by yejr on 周二, 2008/04/15 - 09:29
Submitted by yejr on 周四, 2008/03/06 - 16:44
1. 快速创建相同结构的表,包括索引:
mysql> SHOW CREATE TABLE a;
CREATE TABLE `a` (
`name` varchar(50) default NULL,
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> CREATE TABLE b LIKE a;
Submitted by yejr on 周四, 2008/03/06 - 16:37
一个简单的例子:
delimiter |
create trigger before_insert_a before insert on a
for each row
begin
if USER() != 'root@localhost' then
insert into log values(user());
end if;
end; |
这里不能用 current_user() 代替 user(),因为 current_user() 取得的是创建该trigger的账户。
上面只是个简单的例子,可以通过查询mysql.user, mysql.db 等表来做更详细的权限验证判断。
需要注意的是:启用触发器后会带来系统性能上的下降,需要有个权衡。
Submitted by yejr on 周一, 2008/01/14 - 20:07
是可以支持的,例如这么用:
start transaction;
insert into yejr.a values (1);
insert into test.b values (2);
commit;
但是也有例外,例如事务过程中有create table等隐含自动提交的语句,则会有问题,具体看手册的 "Implicit Transaction Commit and Rollback" 部分
Submitted by yejr on 周日, 2008/01/13 - 11:57
主要是进行排序,或者修改索引,repair,check table 等时候产生的,直接删除就行了。
Submitted by yejr on 周一, 2008/01/07 - 21:27
问:slave服务器my.cnf上配置了read-only选项,为什么还可以在slave中插入/更新数据呢?
答:因为是使用具有super权限的帐号连接的,改用普通帐号就不行了,也就是授权时不能指定有super或all权限
Submitted by yejr on 周三, 2008/01/02 - 20:22
除了调高myisam_max_sort_file_size,还需要注意下面几个问题:
1、如果mysql版本是5.0.6以下的,则需要把myisam_max_extra_sort_file_size也设高
2、mysql的tmpdir必须设在一个足够大的分区下
页面
最近评论