随笔 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,请移步
叫我abc

常用链接

留言簿(12)

随笔分类

我的博客

搜索

  •  

积分与排名

  • 积分 - 294919
  • 排名 - 83

最新评论

阅读排行榜


前阵子交代了mysql的一些初级安装问题,接下来继续。

1.设置存储引擎(strorage engine)
mysql有很多存储引擎,不同的引擎有不同的存储特性,应对不同的解决方案,这就不多说了。
不过最基本的,应该是不用myisam,虽然它很快,但是不支持事务。
innodb并不慢,虽然不可能会有myisam那么快,但是它支持事务,完整性优于更好的效率。
所以配置mysql的第一步,就是设置已经选好的存储引擎——innodb
在.my.cnf配置文件中加上
[server]
default-storage-engine=INNODB

2.设置数据存储位置
本来不会有这一步的,数据文件默认的会保存在mysql/data目录下。但是我当前的磁盘分区快满了,今后肯定没有办法导入大量数据,无奈之下加了块磁盘,然后把数据存储位置设置到新磁盘下。
因为使用的是innodb,所以默认的数据源就不进行移动了,只要设置innodb的目录即可
[server]
innodb_data_home_dir=/newdisk
innodb_log_group_home_dir=/newdisk
其中一个是数据文件目录,另外一个是log目录,这个log和binlog还不太一样,主要是用来维护事务完整性的吧,并不是备份用的。
The ib_logfile's hold statements affecting innodb tables only. If a crash occurs they are automatically used to complete any innodb transactions that didn't complete before the crash.

3.设置字符集
我想这是初次使用mysql的人通常会遇到的问题,而且越晚发现越致命吧。
mysql支持多字符集,为了支持国际化存储,通常服务器的字符集肯定会设置成utf8。不过没有国际化需求的同学可以大大方方的使用gb2312/gbk之类的本地字符集。(默认是latin)
[server]
character_set_server=utf8
服务器的字符集设置其实是次要的,毕竟可以通过create database或者create table来设置更具体的存储字符集。
客户端的字符集设置是关键,分为三部分:
1.client set。即作为数据源所使用的字符集。比如你从文件中导入数据到mysql,那么应该将client set设置为文件所用的字符集;又比如你通过客户端执行插入语句,那么应该将client set设置成客户端所用的字符集;我的secureCRT是utf8的,所以client set=utf8。
2.connection set。mysql服务器收到数据后,会将文字从client set转换成connection set。
为什么要有一个connection set呢,直接转换成存储字符集入库不就好了吗?我查了一下,使用connection set的理由是,文字长度和文字比较等事情的结果,会根据字符集的不同而不同的。
connection set可以根据需要设置,只要别是有损转换即可。通常会和client set保持一致而去掉转换,如果比较结果不影响什么的话。
3.result set。mysql执行语句的结果集在发给你之前,会先转换成result set,通常会和client set一致。你的客户端用什么就让它返回什么就好。
我会选择所有的字符集都用一种,这样也就不需要什么转换了。
[client]
default-character-set=utf8
或者set names utf8(执行语句)

4.表空间(table space)

之所以提到表空间的问题,是因为innodb会把所有的数据都写入到一个数据文件上,如果你不修改默认设置的话。访问一个超大的文件和访问多个较大的文件在效率上相比是怎样我不清楚,但是我的当时导入数据的时候是越来越慢,于是就改成使用多个表空间(数据文件)了。
[server]
innodb_autoextend_increment=50
innodb_data_file_path=ibdata1:700M;ibdata2:2200M;ibdata3:1250M;autoextend
在多个表空间的情况下,mysql只会往最新的一个数据文件上写数据,所以前面的表空间会固定在这个大小。
除非老的表空间因删除数据而有空闲,不然是不会往里写入的,并且老的表空间是不会再增大的。
这种多表空间的使用方式,需要偶尔停下机,新建一个表空间,还是挺麻烦的。
posted on 2009-03-29 20:50 LOGOS 阅读(1837) 评论(0)  编辑 收藏 引用 所属分类: mysql入门

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理