XtraDB存储引擎
XtraDB存储引擎是percona公司对于innodb存储引擎进行改进加强后的产品,第一个版本为1.0.2-1,发布于2008年底。XtraDB兼容innodb的所有特性,并且在IO性能,锁性能,内存管理等多个方面进行了增强。
下载MySQL源代码,当前最新的5.1版本为5.1.40
http://dev.mysql.com/downloads/mysql/5.1.html#source
下载XtraDB源代码,当前最新的版本为1.0.4-8
http://launchpad.net/percona-xtradb/release-8/1.0.4-8/+download/percona-xtradb-1.0.4-8.tar.gz
解压MySQL
tar -zxvf mysql-5.1.40.tar.gz
解压XtraDB
tar -zxvf percona-xtradb-1.0.4-8.tar.gz
将MySQL原来的innodb源码删除或者重命名
cd mysql-5.1.40/storage mv innobase innobase_bak
将XtraDB拷贝为innobase
cp -r ../../percona-xtradb-1.0.4-8 innobase/
重新编译安装MySQL
cd ../ ./configure --prefix=/home/mysql/mysql --with-extra-charsets=all --enable-assembler --enable-profiling --enable-community-features --with-plugins=max --with-client-ldflags=-all-static --with-plugins=all make && make install
安装完成后,就可以按照普通的MySQL安装创建数据库流程执行相应操作即可。XtraDB实际上是基于innodb plugin的代码修改而来,所以以上安装过程和innodb plugin的安装一致。
root@information_schema 04:19:48>show plugins; +--------------------------------+----------+--------------------+---------+---------+ | Name | Status | Type | Library | License | +--------------------------------+----------+--------------------+---------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_RSEG | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_PAGES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_PAGES_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_PAGES_BLOB | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_TABLE_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_INDEX_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | XTRADB_ENHANCEMENTS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | ndbcluster | DISABLED | STORAGE ENGINE | NULL | GPL | +--------------------------------+----------+--------------------+---------+---------+
这里显示的innodb其实已经是XtraDB引擎了。可以简单看一下XtraDB引擎的特性来验证,例如XtraDB在information_schema中引入了xtradb_enhancements来记录其相对于innodb的增强特性。
root@information_schema 04:18:02>desc information_schema.xtradb_enhancements;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| name | varchar(255) | NO | | | |
| description | varchar(255) | NO | | | |
| comment | varchar(100) | NO | | | |
| link | varchar(255) | NO | | | |
+-------------+--------------+------+-----+---------+-------+
root@information_schema 04:19:45>select * from information_schema.xtradb_enhancements\G
*************************** 1. row ***************************
name: xtradb_show_enhancements
description: I_S.XTRADB_ENHANCEMENTS
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 2. row ***************************
name: innodb_show_status
description: Improvements to SHOW INNODB STATUS
comment: Memory information and lock info fixes
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 3. row ***************************
name: innodb_io
description: Improvements to InnoDB IO
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 4. row ***************************
name: innodb_opt_lru_count
description: Fix of buffer_pool mutex
comment: Decreases contention on buffer_pool mutex on LRU operations
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 5. row ***************************
name: innodb_buffer_pool_pages
description: Information of buffer pool content
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 6. row ***************************
name: innodb_expand_undo_slots
description: expandable maximum number of undo slots
comment: from 1024 (default) to about 4000
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 7. row ***************************
name: innodb_extra_rseg
description: allow to create extra rollback segments
comment: When create new db, the new parameter allows to create more rollback segments
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 8. row ***************************
name: innodb_overwrite_relay_log_info
description: overwrite relay-log.info when slave recovery
comment: Building as plugin, it is not used.
link: http://www.percona.com/docs/wiki/percona-xtradb:innodb_overwrite_relay_log_info
*************************** 9. row ***************************
name: innodb_thread_concurrency_timer_based
description: use InnoDB timer based concurrency throttling (backport from MySQL 5.4.0)
comment:
link:
*************************** 10. row ***************************
name: innodb_expand_import
description: convert .ibd file automatically when import tablespace
comment: the files are generated by xtrabackup export mode.
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 11. row ***************************
name: innodb_dict_size_limit
description: Limit dictionary cache size
comment: Variable innodb_dict_size_limit in bytes
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 12. row ***************************
name: innodb_split_buf_pool_mutex
description: More fix of buffer_pool mutex
comment: Spliting buf_pool_mutex and optimizing based on innodb_opt_lru_count
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 13. row ***************************
name: innodb_stats
description: Additional features about InnoDB statistics/optimizer
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 14. row ***************************
name: innodb_recovery_patches
description: Bugfixes and adjustments about recovery process
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
*************************** 15. row ***************************
name: innodb_purge_thread
description: Enable to use purge devoted thread
comment:
link: http://www.percona.com/docs/wiki/percona-xtradb
15 rows in set (0.00 sec)
可以看到引入了很多新的innodb控制参数,允许用户对xtradb引擎的工作方式做更多的控制
root@information_schema 04:22:01>show variables like '%innodb%'; +---------------------------------------+------------------------+ | Variable_name | Value | +---------------------------------------+------------------------+ | have_innodb | YES | | ignore_builtin_innodb | OFF | | innodb_adaptive_checkpoint | none | | innodb_adaptive_flushing | ON | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 8388608 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_buffer_pool_size | 134217728 | | innodb_change_buffering | inserts | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | | | innodb_dict_size_limit | 0 | | innodb_doublewrite | ON | | innodb_enable_unsafe_group_commit | 0 | | innodb_expand_import | 0 | | innodb_extra_rsegments | 0 | | innodb_extra_undoslots | OFF | | innodb_fast_recovery | OFF | | innodb_fast_shutdown | 1 | | innodb_file_format | Antelope | | innodb_file_format_check | Antelope | | innodb_file_io_threads | 4 | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 1 | | innodb_flush_method | | | innodb_flush_neighbor_pages | 1 | | innodb_force_recovery | 0 | | innodb_ibuf_accel_rate | 100 | | innodb_ibuf_active_contract | 0 | | innodb_ibuf_max_size | 67092480 | | innodb_io_capacity | 200 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 8388608 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 75 | | innodb_max_purge_lag | 0 | | innodb_mirrored_log_groups | 1 | | innodb_open_files | 300 | | innodb_overwrite_relay_log_info | OFF | | innodb_read_ahead | linear | | innodb_read_ahead_threshold | 56 | | innodb_read_io_threads | 4 | | innodb_replication_delay | 0 | | innodb_rollback_on_timeout | OFF | | innodb_show_locks_held | 10 | | innodb_show_verbose_locks | 0 | | innodb_spin_wait_delay | 6 | | innodb_stats_auto_update | 1 | | innodb_stats_method | nulls_equal | | innodb_stats_on_metadata | ON | | innodb_stats_sample_pages | 8 | | innodb_stats_update_need_lock | 1 | | innodb_strict_mode | OFF | | innodb_support_xa | ON | | innodb_sync_spin_loops | 30 | | innodb_table_locks | ON | | innodb_thread_concurrency | 0 | | innodb_thread_concurrency_timer_based | OFF | | innodb_thread_sleep_delay | 10000 | | innodb_use_purge_thread | OFF | | innodb_use_sys_malloc | ON | | innodb_version | 1.0.4-7 | | innodb_write_io_threads | 4 | +---------------------------------------+------------------------+ 70 rows in set (0.00 sec)
对比一下原版的5.1.40,innodb相关参数只有37个,整整多了33个参数。
mysql> show variables like '%innodb%'; +-----------------------------------------+------------------------+ | Variable_name | Value | +-----------------------------------------+------------------------+ | have_innodb | YES | | ignore_builtin_innodb | OFF | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 1048576 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | 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_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | 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_stats_on_metadata | ON | | innodb_support_xa | ON | | innodb_sync_spin_loops | 20 | | innodb_table_locks | ON | | innodb_thread_concurrency | 8 | | innodb_thread_sleep_delay | 10000 | | innodb_use_legacy_cardinality_algorithm | ON | +-----------------------------------------+------------------------+ 37 rows in set (0.00 sec)
武汉校园招聘归来
上个星期在武汉参加校园招聘,整整两天半的面试,算了算差不多面了40个人,累得够呛。当然,DBA并没有这么多候选人,只有14位,因为面试官紧缺,顺便帮忙面试了C++开发和系统工程师。和南京时一样,来参加面试的大多是硕士研究生,本科生应该不到十位,博士研究生一位。
总体来说,面试中还是碰到了很多基础不错,有想法的同学,也恭喜这些同学能顺利通过面试,希望明年我们能一起认真工作,快乐生活。对于那些没能通过面试的同学,作为一个过来人和面试官,在这里罗嗦再几句:
一、自信相当重要,如果你都不相信自己能做好这份工作,如何能让面试官相信?部分同学面试时相当的紧张,这也可以理解,所以一开始的紧张还好,但如果半个小时的面试过去了,手脚还在发抖,就不得不让人对你的抗压能力发生怀疑。
二、清楚的认识自己,确认明显的求职方向。有些同学,投的职位从DBA到开发到前端,似乎无所不能。甚至还有同学,面试投的是技术方面的职位,简历上的求职意向却是销售,然后用笔把销售二字涂掉以后再写上DBA,这个,玩笑开得有点大了吧?当然,如果发现有的同学确实基础还不错,而应聘的职位不是太符合的情况下,我会尽量推荐到合适职位的面试官哪里去,但也不能天马行空胡乱撒网是吧?
三、沟通的技巧。有些同学,一上来就像背教科书一样噼里啪啦一通,甚至都不让面试官有开口发问的机会,只好强行打断。或者面对问题再三的避而不答,顾左右而言它,或者用不断提问的方式试图以攻为守。抛开技术能力不谈,这样的方式,在团队中如何能做到有效沟通?
武汉归来,一群人大肆采购周黑鸭,麻辣口味,名不虚传啊。
OOW2009 PPT:Managing Statistics for Optimal Query Performance
在oow2009第三天,听过这堂《Managing Statistics for Optimal Query Performance》,讲课的是Karen Morton女士,非常巧妙的利用一副扑克牌来讲述统计信息的概念,这个ppt让我印象深刻。今天在网上看到Karen Morton已经将该ppt放出来了,引用在这里供大家分享:
OOW2009美国行:金门大桥与奥巴马
太平洋时间15号,OOW第五天,也是最后一天,估计会场已经相当冷清了,只能是估计,因为这一天我没有去会场,没有数据库相关的sessin可以听了。
到了旧金山,不能不去一下金门大桥,虽然起床后发现老天阴沉着脸,时不时还飘点细雨,但想着明天就要离开,我和Fenng还是义无反顾。在Market Street和Powell Street的路口花了5刀搭乘Cable Car到渔人码头。Cable Car也叫叮当车,是旧金山最有名的交通工具。1873年通车,100多年容颜未改的行驶在城市之中,旧金山真是的一座山城,上坡下坡非常多,而叮当车穿行其间,速度虽不快,却别有一番风味。
本想在渔人码头找公交车去金门大桥,两个土鳖转了一圈也没找到,只好打车过去,车费25刀,过桥费6刀,勉强可以接受。天气不好,金门大桥和对面的旧金山城市都笼罩在薄雾之中,拍照受到相当大的影响,不过云山雾罩,也别有一番滋味,爬上桥旁边的小山坡,大桥和旧金山市尽收眼底。第二天去机场的时候,多日阴雨终于第一次晴空万里,却又要匆匆离去,无缘一赏蓝天白云下的金门大桥,有遗憾,待来年,只是未知来年是何年了。
金门大桥是世界著名悬索桥,被誉为近代桥梁工程的一项奇迹。金门大桥的设计者是工程师史特劳斯,大桥雄峙于美国加利福尼亚州宽1900多米的金门海峡之上。金门大桥的巨大桥塔高227米,每根钢索重6412公吨,由27000根钢丝绞成。1933年1月始建,1937年5月首次建成通车。
去是容易回时难。找回城的车又让我们傻眼了,这里没有出租车,也没有找到公交车。最后找到一辆双层观光车,本来是2天35刀随便上下车的,我们和司机说好搭个顺风车回联合广场,每人10刀,后来才发现这10刀还真是值了。我们两个坐在上层,导游一路跟我们聊天,介绍沿途的景点,超级加长型的专车享受啊。车在Golden Gate Park里迂回穿行,一路走马观花,美景不尽。
回到联合广场,发现一拨人正在举着牌子喊口号,而且沿街很多警察,头顶直升机盘旋。找人一打听,说是Obama要来,我们混在人群了等了一个小时,望眼欲穿也没等到,只好放弃。据说Obama和我们入住了同一个酒店,所以后来回酒店时也遇到了一点麻烦,进入酒店的路被封了,还被检查了背包,看来奥巴马出行的阵势也不简单。不过还好也不算太扰民,至少示威的可以示威,路过的也可以路过,只是可能多花点时间而已。
北京时间17号晚上六点,经过13个小时的飞行,终于飞回上海浦东国际机场,为期16天的长途旅行宣告结束。
常用标签: oracle life MySQL Oracle11g blog dba 新特性 oow2009 oow wordpress
最新评论 | Recent comments
- Cassandra Commitlog on Cassandra存储机制: [...] 上一篇:Cassandra存储机制 [......
- bulletming on 遭遇MySQL Replication Fatal Error 1236: 问题原因我一直觉得就是Master死之前,logbin有用os cache或者本身的cache机制...
- isql on dstat:一款简单直观的os实时监控工具: 可以考虑收费了,呵呵...
- foremire on 如何监控MemCached的状态: 的确,web 方式要直观多...
- bwskyer on dstat:一款简单直观的os实时监控工具: 我倒是觉得Process Monitor蛮不错的...
- P.Linux on dstat:一款简单直观的os实时监控工具: 监控工具整合整合就好了,作成一整套监控系统,现在工具都很分散在各个...
- NinGoo on 使用zlib输出gzip格式的文件: @joey 这个工具已经比较长时间没有更新了,最新的一份代码可以通过这个地...
- joey on 使用zlib输出gzip格式的文件: 希望可以见到最新版本的代码,好好学习学...
- NinGoo on tbstat:实时监控数据库统计状态的小工具: 这个可以使用sprintf函...
- P.Linux on tbstat:实时监控数据库统计状态的小工具: 知道怎么刷新了,用Curses,谢谢宁总。 不过又有新问题用Curses要把输出的...
- Marty on PostgreSQL简介: 还是微软安逸,根本就不支持一致读,省得伤脑...
- NinGoo on PostgreSQL简介: 是的,mvcc不管用什么方式实现,update导致的链表肯定是存在的,否则没法...
- 八神 on PostgreSQL简介: oracle的UNDO方式,对于查询的影响也比较严重,总是要根据ITL事务槽,对应...
- 红唇迷恋 on PostgreSQL安装: 我看到你博客调用twitter,你不怕被墙啊。。...
- NinGoo on tbstat:实时监控数据库统计状态的小工具: @P.Linux:这个你可以去参考一些类似的工具,如innotop/mtop...




