Innodb 性能优化基础 原文链接 http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/ 以便于理解,略作删改 问一个基础的问题–如果你有一个16G内存的服务器,专用于mysql大型的Innodb数据库.应该做什么样的设置? 硬件 如果你的Innodb数据库很大,内存是首要的.16-32G现在很便宜了.CPU方面 2个双核的core 就非常好了.但是这跟应用也有很大的关系.第三是IO系统-DAS和RAID是很好的选择.一般来说6-8块硬盘就够了,有时可能需要更多.而且新的2.5″的SAS硬盘,小却速度快.RAID10对于数据存储和主要是读的场合下十分好.需要冗余性的话RAID5也不错但注意对于RAID5的随机写操作. 操作系统 首先 运行64位的操作系统.现在还有很多32位的系统带着很大的内存运行着.建议不要这么做.如果系统是linux,对数据库的目录使用LVM可以获得更高效的备份.ext3文件系统大部分情况下都不会出问题,如果碰到问题的话,试试XFS.如果你使用innodb_file_per_table而且表很多的话可以使用noatime和nodiratime选项,但是这样做效果不是很大.Also make sure you wrestle OS so it would not swap out MySQL out of memory. (最后这句话不知道该如何翻译) MYSQL 的Innodb 设置 最重要的地方有: innodb_buffer_pool_size 设为内存的70%-80%都是安全的.我在一个16G的机器上把它设成12G. UPDATE 关于它具体的查看http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ innodb_log_file_size 这取决于你需要的回复速度.256M这个数值是适当的恢复时间和良好性能之间的一个好的平衡. innodb_log_buffer_size=4M 大多数情况4M足够,除非正将很大的blob数据导入到Innodb中可以增加一点. innodb_flush_log_at_trx_commit=2 如果你不是很关心ACID,可以容许在系统完全crash的情况下丢失最后一两秒的事务,那么可以设置这个值.它可以极大的提高“短“的写事务的效率. innodb_thread_concurrency=8 这个值取决于你的程序,可能高或者低.8是代表起始值. innodb_flush_method=O_DIRECT 避免双缓冲(double buffering)和降低swap的压力.大多数情况下可以提高性能.但是注意如果你RAID cache不够的话,写IO的操作会有麻烦. innodb_file_per_table [...]
Archive for 四月, 2009
[译]Innodb 性能优化基础
星期日, 四月 19th, 2009[翻译][注解]Innodb Performance Optimization Basics
星期日, 四月 19th, 2009原文链接地址如下:http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/ 这篇文章写于2007年11月 翻译参考了这篇译稿:http://yahoon.blog.51cto.com/13184/76592 推荐详细阅读原作者的这篇演讲稿 Innodb性能优化基础 面试别人的时候我喜欢问一个基础的问题:如果你有一个16G内存,专用于mysql大型innodb的数据库服务器,对于典型的web负载,你应该怎样调整mysql的设置?有趣的是其中大多数并不能提出任何有益的建议。所以我决定公布答案,并且我很乐意在硬件,操作系统和应用方面谈谈基础的一些优化。 这篇文章的标题是‘Inodb性能优化基础’,所以这里面的是一些普遍的准则,适用于很多的应用场景,当然最佳的设置要依据具体的应用而定。 硬件 如果你的Innodb数据库很大,那么内存是最重要的。现在16-32G的内存性价比就不错。 From CPU standpoint 2*Dual Core CPUs seems to do very well, while with even just two Quad Core CPUs scalability issues can be observed on many workloads. CPU方面,两个双核的CPU,似乎就不错了,而即使只有两个四核心CPU的可扩展性问题都可以观察到很多的工作量,但是这跟应用也有很大的关系。(这里翻译的很别扭,大家看原文) 第三是IO系统--DAS和RAID是很好的选择.一般来说6-8块硬盘就够了,有时可能需要更多。同时注意新的2.5″的SAS硬盘,小却速度快。RAID10对于数据存储和主要是读的场合下十分合适。需要冗余性的话RAID5也不错,但注意对于RAID5的随机写操作。 操作系统 首先--运行64位的操作系统。现在不少有大内存的服务器,上面还跑着32位的操作系统。建议不要这么做。 如果系统是linux,对数据库的目录使用LVM可以获得更高效的备份。 ext3文件系统大部分情况下都不会出问题,如果碰到问题的话,试试XFS。 如果你使用innodb_file_per_table而且表很多的话可以使用noatime和nodiratime选项,但是这样做效果不是很大。 同时注意给系统留出足够的内存,防止mysql和系统发生内存竞争导致被交换出内存。 MYSQL 的Innodb 设置 (关于更多更详细的参数说明,请参考这里(中文文档)) 最重要的地方有: innodb_buffer_pool_size 设为内存的70%-80%都是安全的。我在一个16G的服务器上把它设成12G。 UPDATE: 如果你想了解更多的细节,请查看tuning innodb buffer [...]
什么时候该增加MySQL数据库的内存?
星期日, 四月 19th, 2009除了优化好数据库配置文件外,更换/增加MySQL数据库服务器的硬件,是提高数据库性能最直接有效的方法。 这里先从最便宜的内存入手。(服务器内存和硬盘价格一般是台式机的5倍左右) 最便捷的方法是使用mysqlreport,来持续关注报告里面‘Key’和‘InnoDB Buffer Pool’这两个部分。如果你的my.cnf参数设置正确,但是Read hit一直低于99%,那么就要考虑增加内存了。 那么Read hit是怎么计算出来的呢?为什么要持续关注?在MySQL的命令行下: mysql> show status like ‘key_read%’; +——————-+————+ | Variable_name | Value | +——————-+————+ | Key_read_requests | 3041374401 | | Key_reads | 60959876 | +——————-+————+ 2 rows in set (0.02 sec) key_efficiency(Read hit) = 1 – (Key_reads / Key_read_requests) = 97.995647100207184% mysql> show status like ‘Innodb_buffer_pool_read%’; +———————————–+————+ | Variable_name [...]
mysql中InnoDB的强制恢复
星期六, 四月 18th, 2009如果数据库页被破坏,你可能想要用SELECT INTO OUTFILE从从数据库转储你的表,通常以这种方法获取的大多数数据是完好的。即使这样,损坏可能导致SELECT * FROM tbl_name或者InnoDB后台操作崩溃或断言,或者甚至使得InnoDB前滚恢复崩溃。 尽管如此,你可以用它来强制InnoDB存储引擎启动同时阻止后台操作运行,以便你能转储你的表。例如:你可以在重启服务器之前,在选项文件的[mysqld]节添加如下的行: [mysqld]innodb_force_recovery = 4innodb_force_recovery被允许的非零值如下。一个更大的数字包含所有更小数字的预防措施。如果你能够用一个多数是4的选项值来转储你的表,那么你是比较安全的,只有一些在损坏的单独页面上的数据会丢失。一个为6的值更夸张,因为数据库页被留在一个陈旧的状态,这个状态反过来可以引发对B树和其它数据库结构的更多破坏。 · 1 (SRV_FORCE_IGNORE_CORRUPT) 即使服务器检测到一个损坏的页,也让服务器运行着;试着让SELECT * FROM tbl_name 跳过损坏的索引记录和页,这样有助于转储表。 · 2 (SRV_FORCE_NO_BACKGROUND) 阻止主线程运行,如果崩溃可能在净化操作过程中发生,这将阻止它。 · 3 (SRV_FORCE_NO_TRX_UNDO) 恢复后不运行事务回滚。 · 4 (SRV_FORCE_NO_IBUF_MERGE) 也阻止插入缓冲合并操作。如果你可能会导致一个崩溃。最好不要做这些操作,不要计算表统计表。 · 5 (SRV_FORCE_NO_UNDO_LOG_SCAN) 启动数据库之时不查看未完成日志:InnoDB把未完成的事务视为已提交的。 · 6 (SRV_FORCE_NO_LOG_REDO) 不要在恢复连接中做日志前滚。 数据库不能另外地带着这些选项中被允许的选项来使用。作为一个安全措施,当innodb_force_recovery被设置为大于0的值时,InnoDB阻止用户执行INSERT, UPDATE或DELETE操作. 即使强制恢复被使用,你也可以DROP或CREATE表。如果你知道一个给定的表正在导致回滚崩溃,你可以移除它。你也可以用这个来停止由失败的大宗导入或失败的ALTER TABLE导致的失控回滚。你可以杀掉mysqld进程,然后设置innodb_force_recovery为3,使得数据库被挂起而不需要回滚,然后舍弃导致失控回滚的表。 本文地址:http://www.bhcode.net/article/20090227/4256.html
只有一个ibd文件如何恢复数据表
星期六, 四月 18th, 2009如果目前只有一个ibd的文件,那么我们该怎么恢复整个数据库?原文的作者给出了两种恢复的方法。这两种方法的前提有两个: 1、一是知道所有需要恢复表的创建语句 2、需要一个16进制的编辑器,修改表id 具体的内容请看原文: Sometime you may need to recover a table when all you have is the .ibd file. In this case, if you try to load it into a new instance, your likely to encounter some errors about the table id not matching. And there is not really a way around this. [...]
更新與安裝 – Install Apache 2.2.11 or Upgrade on FreeBSD
星期五, 四月 17th, 2009Apache 2.2.11 主要是更新了個錯誤 步驟如下 1.更新 FreeBSD 的 src 與 ports 到目前最新版 cd /usr/src make update 就個人經驗而言,最好是將相關的 apache-*, php5-* , pear-* , pecl-* , Smarty , eaccelerator , webmail 等都備份後移除 然後再一步一步安裝更新上去 這樣雖然很麻煩,卻最能避免產生問題後無法處理的情況 PS : 都安裝好了,沒有錯誤訊息, Apache 卻開不起來 2.先備份設定後,然後將相關套件及設定全數移除 pkg_info |sort > /root/pkg.info.txt tar -zcvf /root/etc.tar.gz /etc tar -zcvf /root/usr.local.etc.tar.gz /usr/local/etc tar -zcvf /root/etc.namedb.tar.gz /var/named/etc/namedb tar -zcvf /root/ports_options.tar.gz /var/db/ports [...]
freebsd7.x安装vmware-tools
星期二, 四月 14th, 2009刚开始搞freebsd,先在vmware里试试。 先要安装compat6x 在/usr/ports/misc/compat6x 然后执行ln -s /usr/local/lib/compat/libc.so.6 /lib 原文 http://bbs3.chinaunix.net/thread-1364897-1-5.html
Windows Server 2003 Enterprise x64 Edition 更新到sp2的郁闷
星期一, 四月 13th, 2009更新完没有重起,过一阵子远程弹出 An error occurred while the wizard was checking the current Windows product license. Error Code: 0x8007007f 比较郁闷,没办法只能机房重起,解决了
查看免激活版序列号
星期一, 四月 13th, 2009打开光盘到i386文件夹里找winnt.sif文件
windows2003不能上网更新及注册码更换问题解决
星期一, 四月 13th, 2009先打开注册表,在 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\WPAEvents 随便修改一个字,并保存退出regedit。 然后到c:\windows\system32\oobe下运行msoobe /a 打开激活程序。 选择电话, 更换密钥为 JCGMJ-TC669-KCBG7-HB8X2-FXG7M 或 JK6JC-P7P7H-4HRFC-3XM7P-G33HM 然后关掉窗口不要管那个什么四个步骤 update即可 然后重启。 点击“Windows Update”,连接到更新网站,试一下是否可以在线升级和更新了。 以上方法就可以更换cd key了。。注册码写错了的可以改。。。
windows远程登陆端口的修改方法
星期一, 四月 13th, 2009Windows终端服务原始端口是3389 一、服务器端: 1、第一处 运行RegEdit,打开注册表编辑器。找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp],看到右边的 PortNumber 了吗?在十进制状态下改成你想要的端口号吧,比如 7126 之类的,只要不与其它冲突即可。 2、第二处 运行RegEdit,打开注册表编辑器。找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。 二、客户端: 最简洁的方法就是拷贝WindowsXP的终端服务客户端程序,不用安装,只有1M多,登录只需在地址栏输入IP+:+端口号。 另,Windows2000 也可作如下修改: 打开客户端管理连接器,单击已经建好的某个连接,单击“文件(File)”→“导出(Export)”…… 用记录本或其它文本编辑软件找开刚导出的这个.cns文件,找到“Server Port=3389”这一行了吗? 把这个默认的 3389 改成与服务器一样的端口号就行了。 Windows XP/2003 下的修改办法 使用WindowsXP或Windows2003的客户端,它可以显示多彩,还可以有声音,功能更强大。但终端客户端连接端口的修改方法与Windows2000有一定区别: 按照原来更改Windows2000的客户端的思路,把WindowsXP、Windows2003的默认配置另存(在连接界面上单击“另存为”),和Windows2000不一样的是:WindowsXP、Windows2003的配置文件后缀是.rdp,Windows2000的是.cns 用记事本打开这个default.rdp文件,在里面没有发现什么3389的东东(Windows2000的配置文件是有的),没有这句端口的配置我们就给它加上,假定现在的端口为8933,如下: server port:i:8933 保存,退出即可。
Windows Server 2003企业版 Enterprise Edition VOL(VLK) 简体中文企业正式版原版光盘镜像
星期一, 四月 13th, 2009企业版(64bit)Version: Microsoft Windows Server 2003, Enterprise Edition (64-bit)Filename: x09-45916.iso Product Key: CTQTP-3XXXX-YT7JT-DVMH7-46Q2J
[MSDN]Windows Server 2003 R2, Enterprise Edition with SP2 – VL (简体中文)
星期一, 四月 13th, 2009Windows Server 2003 SP2是针对Windows Server 2003和Windows XP 64位专业版而设计,它集成了最新的升级、安全与稳定性增强包和最新功能。据微软透露,SP2的采用率从发布以来直线上升,它表示自推出不到一周,总下载次数就已经超过400,000次。 参考KEY: VB96B-VFG8F-74XWJ-W67Q7-8X82B M6F6D-VFQWH-CGWRB-RC7JR-VCV4W C49DP-CPHCB-MDGP3-MG334-W2V4W DR4B3-66VPQ-CK3VB-Y3BPY-2CJ2G J YCJX-CHTJX-RGH97-86WM9-RB6B6 MVDYF-X7FBW-H29XT-TCKWW-RBYRT BXJXT-9F88V-XXQWV-3MWMG-FYDJT MHFT3-YGHV4-G86P4-KQXJ3-GYH4W MDGJK-PF6YQ-PD8DJ-RFQVM-7WKWG QV9XT-CV22K-D8MGR-4MD86-8MYR6 MDGJK-PF6YQ-PD8DJ-RFQVM-7WKWG btr9t-8bjjm-k9dh8-w8grh-7qbqy btvtj-8jdph-6r8xk-6xhyq-6qrdy btr9x-4x8ty-2y3w2-jyw3c-tbpmb btt8k-djkyj-x2m9c-kd6rj-db6bb bt3by-cmdtc-twyx3-kfqqq-g3kvm btyqc-347pg-9kb4h-dphh4-rdwyb btv3w-xyb3j-rj9mf-qbkdw-4qbqy btrfk-m749t-f6my2-8mc6w-g2fdy btv4w-jqx3w-y6wkp-dxjc7-7qbqy btrrd-kpkh6-v9jfq-c7dv9-9kg7m btqhd-kmr67-36m66-8kcrr-fxtbb btq8x-6mj6m-vrjvq-c7x82-v2fdy btw6c-6tjmw-3rmw7-3d2vd-pfcmb bt2h3-kwt84-cxvxm-wdgqx-7tpmb btqdm-vpch2-vfcpk-4696j-yv2mb btxy7-tth4f-7jjmm-q4gmg-x7fdy bttdh-rt9bp-6c38g-v6bp9-pxmqy 安装序列号 CD-KEY:JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY 安装序列号:JCGMJ-TC669-KCBG7-HB8X2-FXG7M 使用这个序列号 Windows Server 2003 可在线升级! 如果已经安装了 Windows Server 2003 Enterprise Edition [...]
Windows Server 2003 R2 with SP2 x32/x64 MSDN简体官方企业/标准版[附真正激活KEY]
星期一, 四月 13th, 2009附上KEY,通用于windows 2003 标准版,企业版,SP1,SP2,R2(此KEY网上基本未公开) 附32位KEY T274Y-RT6TY-QYXJC-H6K66-3MT7M H32XR-3KT6X-B83DT-YWM3T-8Q3JG DF33F-WMT84-KDPKT-FQBRG-7YH4T BYR7R-QTCG2-JRJWJ-BJPGP-XDKWG RW89D-BPHQ9-Y77PD-FPYHP-JJ3JG G9DRJ-PBH7J-KQFCF-9PCJG-3VV4T GXJ7R-PDJKW-7TMRK-VT6JC-G4XWG 附64位KEY MM72Q-QBVRW-JGDB6-94C22-GR8YJ HFKHT-CF86J-KFM6F-34RXX-HYYQ8 RYCR6-T7Y6M-2TVHK-C2YW3-7TYQ8 BTXT2-YJ7CH-6MH2Q-X2WD7-77FDY
win2003英文版系统显示中文的方法
星期一, 四月 13th, 2009Control Panel -> Regional and Language Options -> Advanced non-unicode 下拉菜单选择Chinese(PRC) 就行了。装系统时,没装亚太语言支持的,自动就会提示你放入系统安装盘安装。