January 8, 2010
MySQL优化篇-查询优化
"可以参考一下官方文档中的解释。\nhttp://dev.mysql.com/doc/refman/5.1/zh/optimization.html\n优化 7.1. 优化概述\n7.1.1. MySQL设计局限与折衷\n7.1.2. 为可移植性设计应用程序\n7.1.3. 我们已将MySQL用在何处?\n7.1.4. MySQL基准套件\n7.1.5. 使用自己的基准\n7.2. 优化SELECT语句和其它查询\n7.2.1. EXPLAIN语法(获取SELECT相关信息)\n7.2.2. 估计查询性能\n7.2.3. SELECT查询的速度\n7.2.4. MySQL怎样优化WHERE子句\n7.2.5. 范围优化\n7.2.6. 索引合并优化\n7.2.7. MySQL如何优化IS NULL\n7.2.8. MySQL如何优化DISTINCT\n7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN\n7.2.10. MySQL如何优化嵌套Join\n7.2.11. MySQL如何简化外部联合\n7.2.12. MySQL如何优化ORDER BY\n7.2.13. MySQL如何优化GROUP BY …"
January 8, 2010
解除phpMyAdmin 导入大型MySQL数据库文件大小限制
"今天在WPMZ环境下安装了DEDECMS,朋友将以前网站的数据进行导入时出现了一些问题,提示超出导入大小限制。默认MYSQL只能导入最大2MB的数据,于是我在网上找到了修改的方法,事实证明以下方法是可行的。(修改好后必须重启PHP,可) ** phpMyAdmin 导入大型数据库文件大小限制配置…**\n修改 php.ini 文件中下列3项的值: upload_max_filesize, memory_limit 和 post_max_size\nupload_max_filesize,上传文件大小\nmemory_limit 设置内存\npost_max_size 提交数据的最大值\n为你想改的大小值.\n在 phpMyAdmin 的配置文件中修改或加入这个设置: 这个文件一般是在phpMyAdmin目录下的config.inc.php文件\n$cfg[‘ExecTimeLimit’] = 0; // maximum execution time in seconds (0 for no limit)\n默认为300秒钟,改为0表示不受限制"
January 7, 2010
查看域名是否做反向解析的命令
"查看反向解析是否成功,可用如下命令:nslookup –qt=ptr yourIP,从返回的信息中您可以看到反向解析的结果。\nnslookup –qt=ptr yourIP\n比如我的域名是mailcenter.com.cn 我的邮件服务器地址是: 61.144.222.5 邮箱用户名称格式为username@mailcenter.com.cn 在邮件服务器上设置邮件系统的HELO为:smtp.mailcenter.com.cn\n邮件服务器IP为 :61.144.222.5 找当地电信做61.144.222.这个IP反解析到smtp.mailcenter.com.cn 在Windows系统中,在运行命令下 输入 cmd 再在打开的窗口输入 nslookup –qt=ptr 61.144.222.5\n返回信息如下: C:\\Documents and Settings\\user\u0026gt;nslookup –qt=ptr 61.144.222.5 Server: smtp.mailcenter.com.cn Address: 61.144.222.5\n说明这个IP的反向解析就是成功了。\n返回信息 …"
January 6, 2010
MySQL远程访问时非常慢的解决办法
"法一:\n先是上网找了一下资料,说是MYSQL会反查DNS,比较烦人的,2楼写上网上搜索到的资料(有弊端),先说一下我的处理办法\n今天有两个网站(A站和B站),程序一样,分别放在两台服务器,数据库放在A站,B站程序的数据库连接,指向A站IP\n但是访问B站的时候,速度奇慢,这两台服务器还都在同一机房,应该属于局域网,查到资料说是MYSQL对DNS进行反查,这样也好办,我只有这一个站需要远程访问MYSQL,设置一下HOSTS文件,不让A站(数据库服务器端)反查DNS就行了\n修改c:\\windows\\system32\\drivers\\etc\\hosts文件\n添加\nB站IP B站域名\n这样就避免A站(数据库服务器端)不再反查DNS,刷新页面,快了N倍,呵呵,如果按2楼的方法修改,是一劳永逸的,适合有很多站需要远程访问,比如卖空间的,但是有弊端,就是以后就不能再使用主机名连接MYSQL了,具体介绍看2楼\n=========================================\n法二:\n服务器放在局域网内进行测试时,数据库的访问速度还是很快。但当服务器放到外网后,数据库的访问速度就变得非常 …"
January 6, 2010
MySQL数据库中的REPAIR TABLE语法介绍
"REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE [pre] tbl_name[,tbl_name] … [QUICK] [EXTENDED] [USE_FRM]\nREPAIR TABLE用于修复被破坏的表。默认情况下,REPAIR TABLE与 myisamchk –recovertbl_name具有相同的效果。REPAIR TABLE对MyISAM和ARCHIVE表起作用。 通 常,您基本上不必运行此语句。但是,如果灾难发生,REPAIR TABLE很有可能从MyISAM表中找回所有数据。如果您的表经常被破坏,您应该尽力 找到原因,以避免使用REPAIR TALBE。请参见A.4.2节,“如果MySQL依然崩溃,应作些什么”。同时也见15.1.4节,“MyISAM 表方面的问题”。 本语句会返回一个含有以下列的表: 对 于每个被修复的表,REPAIR TABLE语句会产生多行的信息。上一行含有一个Msg_type状态值。Msg_test通常应为OK。如果您没有得 到OK,您应该尝试使用myisamchk –safe-recover修复表,因 …"
January 6, 2010
mysql高级管理命令
"检查表: CHECKTABLE`tablename1`[,`tablename2`]\n优化表: OPTIMIZE TABLE `tablename1` [, `tablename2`]\n修复表: REPAIR TABLE `tablename1` [, `tablename2`]\n分析表: ANALYZE TABLE `tablename1` [, `tablename2`]"
January 6, 2010
MySQL基本命令总结
"测试环境:mysql 5.0.45 【注:可以在mysql中通过mysql\u0026gt; SELECT VERSION();来查看数据库版本】\n一、连接MYSQL。\n格式: mysql -h主机地址 -u用户名 -p用户密码\n1、连接到本机上的MYSQL。\n首先打开DOS窗口,然后进入目录mysql\\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.\n如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql\u0026gt;\n2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:\nmysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)\n3、退出MYSQL命令: exit (回车)\n二、修改密码。\n格式:mysqladmin -u用户名 -p旧密码 password 新密 …"
December 31, 2009
smarty局部缓存
"Smarty提供了强大的 缓存功能。但有时我们并不希望整篇文档都被缓存,而是有选择的缓存某一部分内容或某一部分内容不被缓存。例如你在页面上端使用一个带有广告条位置的模板, 广告条可以包含任何HTML、图象、FLASH等混合信息. 因此这里不能使用一个静态的链接,同时我们也不希望该广告条被缓存. 这就需要在 insert 函数指定,同时需要一个函数取广告条的内容信息。smarty也提供了这种缓存控制能力。\n我们可以使用$smarty-\u0026gt;register_block($params,\u0026amp;$smarty)使整篇页面中的某一块不被缓存。\nindex.tpl:\nXML/HTML代码\n\u0026lt;divalign=‘center’\u0026gt; Page created: {“0″|date_format:”%D %H:%M:%S”} \u0026lt;{dynamic}\u0026gt; Now is: {“0″|date_format:”%D %H:%M:%S”} … do other stuff … \u0026lt;{/dynamic}\u0026gt; div\u0026gt; index.php:\nXML/HTML …"
December 28, 2009
MYSQL开启错误日志的方法
"mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin\n在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。 例如: #Enter a name for the binary log. Otherwise a default name will be used. #log-bin= #Enter a name for the query log file. Otherwise a default name will be used. #log= #Enter a name for the error log file. Otherwise a default name will be used. log-error= #Enter a name for the update log file. Otherwise a default name will be used."
December 28, 2009
修改mysql数据库编码
"修改my.ini文件\n加上\ndefault-character-set=gb2312\n设定数据库字符集\nalter database da_name default character set ‘charset’\n1)设置数据库编码 /etc/my.cnf [mysqld] default-character-set=gbk … [client] default-character-set=gbk --------------------------------------- 2)按字符集导出 $mysqldump -u root -p dbname –default-character-set=gbk \u0026gt; a.sql; 3)查看SQL文件的编码 [root@localhost gethtml]# file a.sql a.sql: UTF-8 Unicode … [root@localhost gethtml]# iconv -f utf-8 -t gbk a.sql \u0026gt; a2.sql [root@localhost gethtml]# file a2.sql …"