Entries Tagged as 'MysqlDBA'

这段时间的经验总结
1、选择精简有效的版本是我们首先需要解决的。这里已经有专家作了当前最全面的评测,一句话:如果你准备构建Mysql,请选择5.0.x版本。下载源直接从Mysql.com下载即可,当然还有更好的选择这个版本。
2、Mysql表设计原则,肯定大家各有一套。经过这些年的磨砺,今天我也就两个经典疑问说说
第一个问题是:表里要不要设计id字段?
答:大部分表里都需要加一个这样字段,类似id序号,主键,类型为BIGINT(20)。这里指代的大部分表是指表内数据最少大于127行。
第二个问题是:有时在设计字段时,会有一个状态值字段,一般习惯使用int值来代替。说不定你感觉挺好,这里我要说说了,快点清醒!使用字符串并且要用形容词来描述。现在不缺这点消耗
3.使用标准工具mysqltuner看优化结果
wget http://mysqltuner.com/mysqltuner.pl
chmod +x mysqltuner.pl
# ./mysqltuner.pl
Enter your administrative username and password
Output you can see as follows

参考:
http://www.percona.com/mysql/5.0.67-b7/source/
http://www.mysqlperformanceblog.com/2008/12/03/mysql-50-51-and-innodb-plugin-cpu-efficiency/
Tags: MysqlDBA
在出现多核后,Mysql的这个参数发生了变化,就目前来说如果是2核的情况下,直接就设置为0.当然这里有高手说了,不要太教条,一定要测试,经验和数据是最最重要的。非常幸运,这个参数可以在线配置数量。如果是最化当然要看Show INNODB Status的参数变化(关于Show Status参数还需要经常复习,作为调优的基准使用)。
另外,对于如果在线配置这个参数,经过查看也找到了:
mysql> set global innodb_thread_concurrency = 0;
=======华丽的分割线==================
假设你有一个mysql数据库机器,现在你登陆后执行show Processlist,看到有很多sleep参数,
mysql> show processlist;
+—–+——-+—————–+——+———+——-+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—–+——-+—————–+——+———+——-+——-+——————+
| 644 | dbmgr | localhost:39943 | iwap | Sleep | 7 | | NULL |
| 698 | root | localhost:59783 | ibbs | Sleep | 12260 | | NULL |
| 699 | dbmgr | localhost:59785 | iwap | Sleep | 12256 | | NULL |
| 702 | root | localhost | NULL | Query | 0 | NULL | show processlist |
但日常查询又没有问题,是不是就不关心它了。注意,当你看到sleep时,你一定要注意,已经有非常重要的错误出现了,快点去干活吧。
如果干,当然需要用工具,首先这里假设你使用的环境是Linux环境,
# netstat -ntp |grep :59785
tcp 0 0 127.0.0.1:3306 127.0.0.1:59785 ESTABLISHED 5339/mysqld
tcp 0 0 ::ffff:127.0.0.1:59785 ::ffff:127.0.0.1:3306 ESTABLISHED 15171/java
这个程序的pid,就可以trace了
# strace -p 15171
Process 15171 attached - interrupt to quit
futex(0xb7fdfbf8, FUTEX_WAIT, 15172, NULL
我靠,终于让我找到原因了。这里是java的syncronized在linux kernel在2.6.12之前有bug,所以如果想解决它,尽快更新kernel到最新版。教训啊,学习啊。希望大家能分享到这些。
参考:
Tags: High Performance Tech · MysqlDBA
这个方法其实不是什么秘密或者tricks。但相信还是会有人需要知道。
首先,由这里看到一个方法:mySQL workbench的使用
第一步:
mysqldump -d –no-add-drop-tables
然后在mySQL workbench菜单中
Clicked File->Import->Reverse Engineer MySQL Script
这样你会得到这个库的表结构信息。
第二步:
选择:
Model->Create Diagram from your Catalog Objects
oK,这回你可以看到效果了。

Tags: MysqlDBA · Tips
真是凑巧,今天晚上回来时还在琢磨是不是尝试一下在MM模式下,把写数据的操作分别负载到机器A和机器B上,想当然的认为这样不就可以提交CPU的处理能力了吗?没想到已经有专家提示,一句话:不可能实现!
原文
Tags: MysqlDBA
刚读一Mysql DBA写的文章受到提示,知道了Linux下的IO Scheduler的选择会在不同场景下,对Mysql有很大的提升。所以搞Mysql的读写的要注意这个小技巧,通过对不同Scheduler的读写测试,了解哪款Scheduler适合你。
注意Linux怎么着也要到2.6.x,有Raid卡,并且有最少4块硬盘的,要上到Raid10,注意是10。
Scheduler:
cfq
noop
deadline
anticipatory
原文中说noop性能更好,他正在作更多的尝试。这里场景不同,选择不同。但一个方法需要记住,那就是对于Scheduler要作尝试选择最优方案。
Tags: MysqlDBA