分享
 
 
 

InnoDB 介绍(转)

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

InnoDB 是 MySQL 上第一个提供外键约束的引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。

InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。

InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 有它自己的缓冲池,能缓冲数据和索引,InnoDB 还把数据和索引存放在表空间里面,可能包含好几个文件,这和 MyISAM 表完全不同,在 MyISAM 中,表被存放在单独的文件中,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。

MySQL 的源代码中,从 3.23.34a 开始包含 InnoDB 表,并在 MySQL -Max 的二进制版本中激活。

如果你使用源码版本下载,自己编译的话,需要采用 --with-innodb 选项:

./configure --with-innodb

在 MySQL-Max-3.23 上使用 InnoDB 时,必须在 my.cnf 或者 my.ini 文件中的 [mysqld] 小节指定启动参数:

innodb_data_file_path=ibdata:30M

InnoDB 以 GNU GPL 版本 2 的许可发布。

MySQL-Max-3.23: 这个产品可以用于生产环境使用。

MySQL-4.0: 这个是开发版本,和 3.23 相比增加了多表删除,查询结果缓冲,SSL 通信,4.0.1 为 Beta 版本。

在 3.23 中,必须至少指定 innodb_data_file_path 的大小,但是在 MySQL-4.0 中这个值默认为 64MB,文件名为 ibdata1。

为了得到好的性能,必须指定 InnoDB 参数,例如:

对于一台 128MB 内存, 10GB 硬盘的 Windows NT 机器的配置如下:

[mysqld]

innodb_data_home_dir = c:\ibdata

# 数据文件必须能容下数据和索引

innodb_data_file_path = ibdata1:2000M;ibdata2:2000M

# 设置缓冲池大小为内存的 50 - 80 %

set-variable = innodb_buffer_pool_size=70M

set-variable = innodb_additional_mem_pool_size=10M

innodb_log_group_home_dir = c:\iblogs

# log_arch_dir 必须和 log_group_home_dir 一样

innodb_log_arch_dir = c:\iblogs

innodb_log_archive=0

set-variable = innodb_log_files_in_group=3

# 设置日志文件大小为缓冲池的 15%。

set-variable = innodb_log_file_size=10M

set-variable = innodb_log_buffer_size=8M

# 如果丢失最近的几个事务影响不大的话,设置 flush_log_at_trx_commit 为 0。

innodb_flush_log_at_trx_commit=1

set-variable = innodb_file_io_threads=4

set-variable = innodb_lock_wait_timeout=50

注意 InnoDB 不会自己建立目录,你必须使用操作系统命令建立目录,并注意 MySQL 的权限。

第一次运行 MySQL 时,建议使用命令行方式。在 Windows 下,用命令行开启:

C:\MYSQL>mysqld-max --standalone --console

在 Windows 下设置配置文件的原则是:

my.cnf 和 my.ini 只能是一个有效。

my.cnf 放在 C: 根目录下, my.ini 文件放在 WINDIR 目录下,C:\WINDOWS 或者 C:\WINNT。

在 Linux 下面,初始配置文件按下面的顺序搜索:

/etc/my.cnf 全局选项

COMPILATION_DATADIR/my.cnf 服务器范围的选项

defaults-extra-file 采用 --defaults-extra-file=.... 的文件

~/.my.cnf 用户指定的选项

假设你有一台 512MB 内存,三台 20GB 硬盘(路径分别为:"/","/dr2","/dr3“)的服务器,设置的例子为:

[mysqld]

innodb_data_home_dir = /

innodb_data_file_path = ibdata/ibdata1:2000M;dr2/ibdata/ibdata2:2000M

set-variable = innodb_buffer_pool_size=350M

set-variable = innodb_additional_mem_pool_size=20M

innodb_log_group_home_dir = /dr3/iblogs

innodb_log_arch_dir = /dr3/iblogs

innodb_log_archive=0

set-variable = innodb_log_files_in_group=3

set-variable = innodb_log_file_size=50M

set-variable = innodb_log_buffer_size=8M

innodb_flush_log_at_trx_commit=1

set-variable = innodb_file_io_threads=4

set-variable = innodb_lock_wait_timeout=50

#innodb_flush_method=fdatasync

#innodb_fast_shutdown=1

#set-variable = innodb_thread_concurrency=5

为了提升性能,我们把日志文件和数据文件放在不同的磁盘,另外还可以采用裸的磁盘分区来存储数据以提升性能。

需要提醒的是,在 Linux x86 上不要把内存设置太高,glibc 会把进程堆增长到线程堆栈之上,能把服务器给搞垮,下面的值接近于 2GB 时就很危险:

innodb_buffer_pool_size + key_buffer +

max_connections * (sort_buffer + record_buffer) + max_connections * 2 MB

每个线程将使用 2MB(二进制版本为 256 KB) 的堆栈,在最坏的情况下,还会使用 sort_buffer + record_buffer 的附加内存。

后续的文章,我们还将介绍 InnoDB 表的建立,MyISAM 到 InnoDB 的转换,外键约束的使用,自动增长列的操作,InnoDB 数据库的备份和恢复,事务的使用,性能调优等内容。

请继续关注,FreeLAMP.com 为您提供的企业级的开放源码数据库解决方案。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有