Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1285183
  • 博文数量: 161
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 2165
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 17:09
文章分类

全部博文(161)

文章存档

2012年(2)

2011年(13)

2010年(137)

2009年(5)

2008年(4)

我的朋友

分类: LINUX

2010-07-21 00:48:09

mysql 4.1:

如果你想使用外键,事务等功能,记得用innodb引擎。
使用方法是create table xxx()engine=innodb;
如果想所有建立的表格都用innodb引擎,可以把“default-storage-engine=INNODB”加/etc /my.cnf(位置可能不同)。设完之后就可以用“show engines;”检查是否设置好。
--------------------------
原因:innodb默认参数比较小,性能不 佳。
优化过程如下:
1。停止服务器的前后台服务。
2。mysqldump -uroot -p'xxx' db > /tmp/db.sql
3.确保所有的表都为Innodb结构
检查:#ll /var/lib/mysql/db/*.MYD,显示的即全为mysqlisam格式,要修改成innodb
修改:登录数据库后,
alter table table1 type = InnoDB;
alter table table2 type = InnoDB;
alter table table3 type = InnoDB;
::
3.mysqldump -uroot -p'xxx' db > /tmp/db-2.sql
4.删除原来数据库
drop database db;
show databases;
确 保已删除
5.mkdir /var/lib/mysql/innodb
建立目录,并且确保数据库有访问权限
6.配置mysql 的Innodb启动选项
在my.cnf里的[mysqld]里添加如下参数(本机为2G物理内存):
innodb_file_per_table
innodb_data_file_path = ibdata2:1000M;ibdata3:1000M:autoextend
set-variable = innodb_buffer_pool_size=1024M
set-variable = innodb_additional_mem_pool_size=200M
innodb_log_group_home_dir = /var/lib/mysql/innodb
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=150M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
7。重启mysql 
service mysqld restart
8。新建库
create database db;
9.导入数据
mysql -uroot -p'xxx' db < /tmp/db-2.sql
10.启动服务器前 后台服务,压力测试比较。
---------------------------------------

InnoDB做为MySQL目前最广泛的事务存储引擎,很多地方的设计和Oracle都是共通的。
下面是windows上一个MySQL默认的参数查询结果:
mysql> show variables like 'Innodb%';
+---------------------------------+------------------------+
| Variable_name                   | Value                  |
+---------------------------------+------------------------+
| innodb_additional_mem_pool_size | 2097152                |
| innodb_autoextend_increment     | 8                      |
| innodb_buffer_pool_awe_mem_mb   | 0                      |
| innodb_buffer_pool_size         | 8388608                |
| innodb_checksums                | ON                     |
| innodb_commit_concurrency       | 0                      |
| innodb_concurrency_tickets      | 500                    |
| innodb_data_file_path           | ibdata1:10M:autoextend |
| innodb_data_home_dir            |                        |
| innodb_doublewrite              | ON                     |
| innodb_fast_shutdown            | 1                      |
| innodb_file_io_threads          | 4                      |
| innodb_file_per_table           | OFF                    |
| innodb_flush_log_at_trx_commit  | 1                      |
| innodb_flush_method             |                        |
| innodb_force_recovery           | 0                      |
| innodb_lock_wait_timeout        | 50                     |
| innodb_locks_unsafe_for_binlog  | OFF                    |
| innodb_log_arch_dir             |                        |
| innodb_log_archive              | OFF                    |
| innodb_log_buffer_size          | 1048576                |
| innodb_log_file_size            | 10485760               |
| innodb_log_files_in_group       | 2                      |
| innodb_log_group_home_dir       | .\                     |
| innodb_max_dirty_pages_pct      | 90                     |
| innodb_max_purge_lag            | 0                      |
| innodb_mirrored_log_groups      | 1                      |
| innodb_open_files               | 300                    |
| innodb_rollback_on_timeout      | OFF                    |
| innodb_support_xa               | ON                     |
| innodb_sync_spin_loops          | 20                     |
| innodb_table_locks              | ON                     |
| innodb_thread_concurrency       | 8                      |
| innodb_thread_sleep_delay       | 10000                  |
+---------------------------------+------------------------+

innodb_additional_mem_pool_size
用于缓存InnoDB数据字典及其他 内部结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。

innodb_buffer_pool_size
内存缓冲池大小,用于缓存表和索引数据等。类似于 Oracle的buffer cache,如果可能,尽可能的设置大一点。

innodb_log_buffer_size
日志缓冲区大小,类似于Oracle的log buffer

innodb_log_file_size
日志文件大小。默认会创建2个5M大小的名为 ib_logfile0和ib_logfile1的文件。日志文件的数目由参数innodb_log_files_in_group指 定。存放位置由innodb_log_group_home_dir指定。

innodb_data_file_path
指定InnoDB表空间数据文件名,大小以及其他属性。所 有文件的加起来不能少于10M。多个数据文件之间以逗号分割,属性之间以冒号分割。默认创建一个大小10MB名为ibdata1的可自动扩展的数据文件, 一般在生产环境中都需要根据实际情况指定,由于往表空间中添加数据文件需要停机,尽量在规划的时候做好准备,如果可以的话最好开启最后一个数据文件的自动 增长属性。数据文件的个数在规划的时候还需要考虑另外一个innodb_open_files参数。

innodb_file_per_table
取值为ON或者OFF。是否为每个table使用单独的数 据文件保存。如果系统中表的个数不多,并且没有超大表,使用该参数可以使得各个表之间的维护相对独立,有一定的好处。

innodb_autoextend_increment
当自动扩展表空间被填满之时,每次扩展空间的 大小,默认值是8(单位MB)。该参数可以动态修改:
mysql> set global innodb_autoextend_increment=10;
Query OK, 0 rows affected (0.01 sec)

innodb_status_file
定期将show inndb status的 结果输出保存到文件中,建议开启以便分析性能。


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