twitter-mysql改进点

标签: twitter mysql | 发表时间:2012-04-28 09:39 | 作者:zhaiwx1987
出处:http://blog.csdn.net

目前最新的twitter-mysql版本基于mysql5.5.22,以下总结了一些比较明显的改进点,大部分已经亲自证实,其他一些诸如修复的比较次要的问题(例如编译问题)这里暂不列出,可以详细参阅 https://github.com/twitter/mysql/wiki/Change-History 

修复的bug

1. bug#60682

某些场景下,同时执行select/drop table/rename table/show innodb status时,可能会导致死锁

使用buglist上提供的testcase在5.1.48上能重现,5518尚未重现。

2. bug#61575

当无法初始化本地native aio时(io_setup()失败)会crash innodb

3. bug#64556

中断在innodb层的查询可能会导致不相关的warning

4. Bug#65030:

5 .Bug#65061

6. Potential security issue with Oracle MySQL

If, for whatever reason, the memcmp() call in check_scramble() returns a value with the 8 rightmost bits set to zero (e.g. 256), an invalid password could be accepted during authentication.


新特性

1.增加选项innodb_flush_dirty_pages_age,该参数的目的是为了减少频繁的去刷新磁盘,尤其是对于命短的Ssd盘比较有用。

在磁盘比较空闲的时候,它会限制每次只刷前innodb_flush_dirty_pages_age秒的脏页。


2.可以动态配置--replicate-*参数

用户可以在线动态修改过滤规则而无需重启服务器


3.增加新的选项max_statement_time参数

该参数为session级别,其目的是在服务器端限制一条语句的执行时间,单位为ms,当查询超过该值时,会被中断。

例如:

SELECT MAX_STATEMENT_TIME=10 * FROM t1;

超过10ms则中断查询

还可以给每个账户限制时间

GRANT ... TO 'user'@'host' WITH MAX_STATEMENT_TIME 10


4.集成新的information_schema表,如下:

INNODB_BUFFER_PAGE

INNODB_BUFFER_PAGE_LRU

INNODB_BUFFER_POOL_STATS

这些表显示了比较详细的buffer pool信息,关于这些i_s表可以参阅MySQL5.6的文档


5.prefetch_pages命令,允许你手动的将相应的数据或者索引页加载到buffer pool中,例如

root@test 09:44:18>select engine_control(innodb, prefetch_pages, 2,1) as pages;    

+-------+

| pages |

+-------+

|     1 |

+-------+

1 row in set (0.00 sec)

通过engine_control函数来实现,其中:

第一个参数表示引擎的类别

第二个参数表示存储引擎命令,目前为prefetch_pages

第三个参数表示space id

第四个参数(后面可选的增加更多pageno)表示页号


6.super-only选项,将禁止非超级用户执行任何语句(read_only只能阻止更新语句)


7.新的协议类型protocol_mode

xxx@test 09:54:45>show variables like '%protocol_mode%';

+---------------+---------------------------------------------+

| Variable_name | Value                                       |

+---------------+---------------------------------------------+

| protocol_mode | MINIMAL_OBJECT_NAMES_IN_RESULT_SET_METADATA |

+---------------+---------------------------------------------+

这个选项只有一个值,默认为NULL,该选项可以简化传递给客户端的元数据,当设置该选项后,传递给客户端的库名,表名和列名都是空字符串  (尚未证实)原文的changelog解释如下:

This change introduces a new protocol mode that instructs MySQL to empty certain object names that are part of the result set metadata. Only the absolutely minimal (or essential) set of names is preserved. If the minimal option is set, the database, table (both original and aliased) and column names in the result set metadata will be empty strings. Only the column alias name is preserved.


8.增加了一些新的status变量

Innodb_files_open

Innodb_files_opened

Innodb_files_closed

Innodb_tablespace_files_open

Innodb_tablespace_files_opened

Innodb_tablespace_files_closed


9.为mysqld_safe增加了新的选项:

Format

Option File

Description

--flush-caches

flush-caches

Flush and purge buffers/caches (vm.drop_caches=3)

--numa-interleave

numa-interleave

Run mysqld with its memory interleaved on all CPUs

这部分大意是在启动Mysqld前sync and drop cache??

Added mysqld_safe options to flush (sync and drop) caches before starting mysqld and to set the NUMA memory allocation policy to interleave

有DBA同学能够去分析下么,看看能否将这些特性移植过来?


10.buffer pool内存预分配

增加选项

xxx@test 10:23:11>show variables like '%innodb_buffer_pool_populate%';

+-----------------------------+-------+

| Variable_name               | Value |

+-----------------------------+-------+

| innodb_buffer_pool_populate | OFF   |

+-----------------------------+-------+

为buffer pool预先分配好需要的物理内存



11.表.ibd文件预分配

增加了新的表选项min_pages,可以在create/alter table时,指定page的大小,从而达到预分配.ibd文件的目的,对于插入很猛的应用,可以表空间扩展引起的避免抖动

例如:

root@test 10:38:44>Create table t1 (a int ,b int ) min_pages = 100;

Query OK, 0 rows affected (0.12 sec)

$ls -lh t1.ibd 

-rw-rw---- 1 root root 7.0M Apr 18 10:38 t1.ibd



24号发布的新的基于mysql5.5.22的版本,还没来得及看,先贴过来吧 :)

  • MYSQL-62: Replication info not available from crash recovery?

    Restored code that stores the master binary log position of a slave in InnoDB's data file. Like in earlier MySQL versions, if a slave crashes, the name and position of the slave in relation to the master binary log file is printed after crash recovery.

  • Backport innodb_flush_neighbors from MySQL 5.6

    Backported from MySQL 5.6 the  innodb_flush_neighbors option that controls whether flushing a page from the InnoDB buffer pool also flushes other dirty pages in the same extent.

  • Add ability to disable anticipatory flushing

    Introduced the  innodb_anticipatory_flushing option that controls whether the master thread will flush dirty pages from the buffer pool if there is I/O bandwidth available for background tasks.

  • Add InnoDB flush-related status variables

    Introduced status variables that provide counters for the various flushing-related tasks performed by InnoDB. For example, these counters provide information about the number of pages scanned and flushed from the flush and LRU lists. Also, there are counters for the number of pages flushed by the background thread.


作者:zhaiwx1987 发表于2012-4-28 9:39:10 原文链接
阅读:32 评论:0 查看评论

相关 [twitter mysql] 推荐:

twitter-mysql改进点

- - CSDN博客推荐文章
目前最新的twitter-mysql版本基于mysql5.5.22,以下总结了一些比较明显的改进点,大部分已经亲自证实,其他一些诸如修复的比较次要的问题(例如编译问题)这里暂不列出,可以详细参阅 https://github.com/twitter/mysql/wiki/Change-History .

Twitter 开源其 MySQL 优化成果

- - 博客 - 伯乐在线
据  Twitter 工程博客透露, Twitter 决定开源其使用的、经过优化的 MySQL 版本. Twitter 工程师 Jeremy Cole 和 Davi Arnaut 在博客中称:. MySQL 是 Twitter 大部分数据(如兴趣图谱、时间轴、用户数据和推文等)的主要存储技术. 由于我们的规模,我们比其他公司更能推动 MySQL 的发展.

MySQL在Twitter的应用以及Mysos介绍

- - 博客园_新闻
自创立以来,MySQL 一直是 Twitter 使用的关键数据存储技术之一. 他们的数据存储在数以百计的模式中,最大的集群有数以千计的节点,每秒为数以百万计的查询提供服务. 近日,网站可靠性工程部门高级经理 Pascal Borghino 撰文介绍了 MySQL 在 Twitter 的应用以及正在孵化中的 Mysos 项目.

Twitter 中文版

- 幻幽 or A書 - Gea-Suan Lin's BLOG
前幾天 Twitter 推出了中文版 (包括繁體與簡體):「Five new languages」. 對岸的市場可能還是進不去,但在台灣會加速 Plurk 的死亡… 從 Google+ 的出現以後就愈來愈明顯了,現在 Microblogging 的大魔頭再加入戰局,應該會更快….

Twitter和Facebook合作

- Woooon - cnBeta.COM
很重磅的新闻,两大社交网络巨头开始有合作了. Twitter 今天在用户的个人档案页面添加「Post Tweets to Facebook」按钮,让用户快速将自己的 Tweets 同步到 Facebook 状态中去.

Tribalfish = Twitter + 博客 + 论坛

- Kofai - 36氪
在网络上讨论流行话题有多重选择,你可以在Twitter上追踪话题或名人,也可以在博客上分享经验,更可以在论坛上你来我往,不过,Twitter上的讨论不够深入,博客讨论足够深入又不够及时,Tribalfish 就是集以上讨论工具的大成. 注册登陆后,你会看到好像论坛的界面,只是,不同于一般的论坛界面必须前后查找不同的话题,开启一页又一页的分布,Tribalfish让你可以仪在原页,直接点选感兴趣的内容,并在右方预览,也可以点选分享人的名字后追踪该使用者,这些设计也很像Twitter.

回顾 Twitter 的演变史

- tiansiyuan - 爱范儿 · Beats of Bits
2011 年 3 月后,Twitter 度过了五岁生日. 这只小鸟的飞行速度没有减缓,事实上,Twitter 在 4 月份的动作还挺多. Twitter  推出了新的网页版本,更加时尚的设计,主动推荐潜在关注对象;. “本地趋势”功能拓展到了 70 多个城市和国家;. 新的搜索工具,帮助人们更方便地去寻找新用户.

修改Hosts访问Twitter/Facebook

- cheng - 启光博客
  以前没感觉Facebook多么特别,最近又玩了一些日子,感觉还不错. 因为关注Facebook所以对最新Hosts比较关注,今天发现一个网友整理的,测试可直接使用. 虽然一直在文章中说以后不再发布类似的文章,不过没忍住,网友低调点使用吧,希望对经常访问Twitter与Facebook的网友有此帮助.

Twitter API中文文档

- Jacob - 月光博客
  目前的国内的微博客很多,不少微博客都提供Open API,然而,很多微博提供的API和Twitter的API有一些或多或少的差别,调用格式上并不完全相同.   我建议所有提供API的微博客系统,都将各自的API统一为Twitter的API调用格式,例如目前较有影响的开源微博系统StatusNet(Laconica)的API格式就完全兼容Twitter,这种统一API对于开发者和用户都有很大的好处.

Twitter估值84亿美元

- vieplivee - Solidot
《华尔街日报》报导(中文),Twitter宣布获得俄罗斯风投公司Digital Sky Technologies牵头的一笔融资,这笔约8亿美元的投资将Twitter估值推高至84亿美元. 报导引用消息人士的话称,此轮融资将部分用于收购现有股东的持股:一半的投资将用于Twitter,而另一半4亿美元将被用来收购现有股东持有的股份.