January 24, 2010
mysql的默认查询优先还是更新(insert、update、delete)优先关系
"\u003cp\u003eMySQL还允许改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。\u003c/p\u003e\n\u003cp\u003e我们首先应该确定应用的类型,判断应用是以查询为主还是以更新为主的,是确保查询效率还是确保更新的效率,决定是查询优先还是更新优先。\u003c/p\u003e\n\u003cp\u003e下面我们提到的改变调度策略的方法主要是针对Myisam存储引擎的,对于Innodb存储引擎,语句的执行是由获得行锁的顺序决定的。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMySQL的默认的调度策略可用总结如下:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e写入操作优先于读取操作。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e对某张数据表的多个读取操作可以同时地进行。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eMySQL提供了几个语句调节符,允许你修改它的调度策略:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eLOW_PRIORITY关键字应用于DELETE、INSERT、LOADDATA、REPLACE和UPDATE。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHIGH_PRIORITY关键字应用于SELECT和INSERT语句。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDELAYED关键字应用于INSERT和REPLACE语句。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e如果写入操作是一 …\u003c/p\u003e"
January 24, 2010
用mysql中的join来优化查询
"\u003cp\u003eMysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。\u003c/p\u003e\n\u003cp\u003e假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:\u003c/p\u003e\n\u003cp\u003eSELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo)\u003c/p\u003e\n\u003cp\u003e如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。尤其是当salesinfo 表中对CustomerID建有索引的话,性能将会更好,查询如下:\u003c/p\u003e\n\u003cp\u003eSELECT * FROM customerinfo\nLEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.CustomerID\nWHERE salesinfo.CustomerID IS NULL\u003c/p\u003e\n\u003cp\u003e连 …\u003c/p\u003e"
January 24, 2010
在mysql中对order by的字段进行优化
"\u003cp\u003e在某些情况中,MySQL可以使用一个索引来满足ORDER BY子句,而不需要额外的排序。where条件和order by使用相同的索引,并且order by的顺序和索引顺序相同, 并且order by的字段都是升序或者都是降序。\u003c/p\u003e\n\u003cp\u003e例如:下列sql可以使用索引。\u003c/p\u003e\n\u003cp\u003eSELECT * FROM t1 ORDER BY key_part1,key_part2,…;\u003c/p\u003e\n\u003cp\u003eSELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC,key_part2 DESC;\u003c/p\u003e\n\u003cp\u003eSELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 DESC;\u003c/p\u003e\n\u003cp\u003e**但是以下情况不使用索引: **\u003c/p\u003e\n\u003cp\u003eSELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 ASC;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e–orderby的字段混合ASC和DESC\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e**\n**\u003c/p\u003e\n\u003cp\u003eSELECT * FROM t1 WHERE key2=constant ORDER BY key1;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e–用于查询行的关键字与ORDERBY中所使用的不相同\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e**\n** …\u003c/p\u003e"
January 24, 2010
mysql优化一般步聚(教程)
"\u003cp\u003e\u003cstrong\u003e1.1优化SQL的一般步骤\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e11.1.1\u003c/strong\u003e \u003cstrong\u003e通过show status和应用特点了解各种SQL的执行频率\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e通过SHOW STATUS可以提供服务器状态信息,也可以使用mysqladminextended- status命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global 级别的统计结果。\u003c/p\u003e\n\u003cp\u003e以下几个参数对Myisam和Innodb存储引擎都计数:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eCom_select 执行select操作的次数,一次查询只累加1;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCom_insert执行insert操作的次数,对于批量插入的insert操作,只累加一次;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCom_update执行update操作的次数;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCom_delete 执行delete操作的次数;\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e以下几个参数是针对Innodb存储引擎计数的,累加的算法也略有不同:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eInnodb_rows_read select查询返回的行数;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInnodb_rows_inserted执行Insert操作插入的行数;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInnodb_rows_updated执行update操作更新的行数; …\u003c/p\u003e\u003c/li\u003e\u003c/ol\u003e"
January 24, 2010
mysql数据库开发需要注意的问题
"\u003cp\u003e\u003cstrong\u003e10.1数据库名、表名大小写问题\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。这说明在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感。一个显著的例外情况是MacOSX,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感。然而,MacOSX也支持UFS卷,该卷对大小写敏感,就像Unix一样。\u003c/p\u003e\n\u003cp\u003e注释:尽管在某些平台中数据库名和表名对大小写不敏感,不应在同一查询中使用不同的大小写来引用给定的数据库或表。下面的查询不会工作,因为它同时引用了表my_tables和as\nMY_tables:mysql\u0026gt;SELECT* FROMmy_tableWHERE MY_TABLE.col=1;列、索引、存储子程序和触发器名在任何平台上对大小写不敏感,列的别名也不敏感。\u003c/p\u003e\n\u003cp\u003e默认情况,表别名在Unix中对大小写敏感,但在Windows或MacOSX中对大小写不敏感。\u003c/p\u003e\n\u003cp\u003e下面的查询在Unix中不会工作,因为它同时引用了 …\u003c/p\u003e"
January 22, 2010
mysql字符集的设置
"\u003cp\u003emysql 的字符集和校对规则有 4 个级别的默认设置:\u003cstrong\u003e服务器级、数据库级、表级\u003c/strong\u003e 和 \u003cstrong\u003e字段级\u003c/strong\u003e。分别在不同的地方设置,作用也不相同。服务器字符集和校对,在 mysql 服务启动的时候确定。\u003c/p\u003e\n\u003cp\u003e可以在 \u003cstrong\u003emy.cnf\u003c/strong\u003e 中设置:\n[mysqld]\n\u003cstrong\u003edefault-character-set=utf8\u003c/strong\u003e\n或者在启动选项中指定:\n\u003cstrong\u003emysqld –default-character-set=utf8\u003c/strong\u003e\n或者在编译的时候指定:\n./configure –with-charset=utf8\n如果没有特别的指定服务器字符集,默认使用 latin1 作为服务器字符集。上面三种 设置的方式都只指定了字符集,没有指定校对规则,这样是使用该字符集默认的校对规则, 如果要使用该字符集的非默认校对规则,则需要在指定字符集的同时指定校对规则。\n可以用 show variables like ‘character_set_server’; 命令查询当前服务器的字符集和校对规则。\u003c/p\u003e"
January 22, 2010
用apache来实现限制ip可以访问phpmyadmin
"\u003cp\u003e为了安全,只允许固定ip才可以访问phpmyadmin,这个由于没有找到在phpmyadmin配置的地方,所以这里用apache来实现这个功能\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eServerAdmin www@163.com\nDocumentRoot “D:\\site\\phpMyAdmin”\nServerName php.haohtml.com\nDirectoryIndex index.php index.shtml\n\n\nOptions Indexes MultiViews\nAllowOverride None\norder deny,allow\nAllow from 192.168.0.7\nDeny from all\n\nAllow from all\n\nOptions FollowSymLinks Includes\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e经过上面一系列的配置,将只允许ip为192.168.0.7的ip才可以访问phpmyadmin,其它的ip都不允许访问.\u003c/p\u003e"
January 21, 2010
查看mysql中表的创建日期
"\u003cp\u003eshow table status\u003c/p\u003e\n\u003cp\u003e通过show table status where name =’表名’; 可以查看指定表的信息\u003c/p\u003e"
January 20, 2010
windows下合并分区-Acronis Partition Expert
"\u003cp\u003eAcronis Partition Expert ,使用软件的安装很简单,第一次安装之后,一般会提示重新启动电脑。重新启动后,桌面上会有一个快捷图标,运行Acronis Partition Expert ,初次使用,会提示使用的模式,一般我们推荐使用 manual模式,就是手动模式。\u003c/p\u003e\n\u003cp\u003e分区调整大小:这个软件调整分区大小是非常非常简单的。\u003c/p\u003e\n\u003cp\u003e第 一步:点击菜单Wizard(向导)下面的Increase Free Space(扩充硬盘空间),或者软件左上角有个Wizard板块,点击里面的Increase Free Space 。会出来一个向导窗口。如果你要增加C盘分区大小,你就选择C,总之,想增加哪个硬盘分区的大小,就选择哪个。\u003c/p\u003e\n\u003cp\u003e第二步,点击Next,然后出来一个图片,让你选择想从那个硬盘分区分出来空间,分给上一步选择要扩充分区容量的那个盘。当然,这一步,你要选择一个剩余空间大的硬盘。选择d或者e或者其他之后,被选中的就要分出空间了。点击下一步。\u003c/p\u003e\n\u003cp\u003e第三步,你可以随意调整C盘(第一步里面你要扩充的那个盘)的大小了,当然前提是能分出来那么多空间。\u003c/p\u003e\n\u003cp\u003e以 上步骤完成后,软件工具栏的那个小旗子图标,就 …\u003c/p\u003e"
January 20, 2010
chmod命令实例
"\u003cp\u003echown 修改文件和文件夹的用户和用户组属性\n1。要修改文件hh.c的所有者.修改为sakia的这个用户所有\nchown sakia hh.c\n这样就把hh.c的用户访问权限应用到sakia作为所有者\n2。将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net\nchown -R sakia:net /tmp/sco\u003c/p\u003e\n\u003cp\u003echmod 修改文件和文件夹读写执行属性\n1。把hh.c文件修改为可写可读可执行\nchmod 777 hh.c\n要修改某目录下所有的文件属性为可写可读可执行\nchmod 777 *.*\n把文件夹名称与后缀名用*来代替就可以了。\n同理若是要修改所有htm文件的属性\nchmod 777 \u003cem\u003e.htm\n2。把目录 /tmp/sco修改为可写可读可执行\nchmod 777 /tmp/sco\n要修改某目录下所有的文件夹属性为可写可读可执行\nchmod 777 *\n把文件夹名称用\u003c/em\u003e来代替就可以了\n要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行\nchmod -R 777 /tmp/sco\n可写 w=4\n可读 r=2\n可执行 x=1\n777就是拥有全 …\u003c/p\u003e"
January 20, 2010
用freebsd-update命令升级freebsd系统
"\u003cp\u003efreebsd-update — fetch and install binary updates to FreeBSD\u003c/p\u003e\n\u003cp\u003e描述:\nfreebsd-update 是FreeBSD系统用来撷取, 安装及取得binary update 的工具。要注意的是,这些update仅止于FreeBSD Release Engineering Team维护的版本.\n诸如: FreeBSD 6.1-RELEASE 或 FreeBSD 6.2-RC1 而非 FreeBSD 6.2-STABLE\nor FreeBSD 7.0-CURRENT 之类的版本.\n补充: FreeBSD 6.2-RELEASE版本后才有此指令\u003c/p\u003e\n\u003cp\u003e语法:\nfreebsd-update [-b basedir] [-d workdir] [-f conffile] [-k KEY]\n[-r newrelease] [-s server] [-t address] command\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参数:\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e-b basedir 指定系统挂载的最基本路径 (预设: / )\u003c/p\u003e\n\u003cp\u003e-d workdir 档案暂存数据夹 (预设: …\u003c/p\u003e\u003c/blockquote\u003e"
January 13, 2010
freebsd挂载硬盘
"\u003cp\u003e\u003cstrong\u003e第一种方法:使用 sysinstall\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在使用 sysinstall 来设定新的硬盘之前,请先确定您是以 root 身份执行。接下来,您就可以依照下列步骤来新增硬盘:\u003c/p\u003e\n\u003cp\u003e进入 sysinstall\u003c/p\u003e\n\u003cp\u003e进入 sysinstall 的主选单后,首先请选择 [Configure],进入后,再选择 [Fdisk] 项目以进入 Fdisk 选单。第一次进入 Fdisk 时,sysinstall 会要求您选择所要设定的硬盘,请选择 ad1。\u003c/p\u003e\n\u003cp\u003e使用 Fdisk\u003c/p\u003e\n\u003cp\u003e相信您对于 Fdisk 的画面应该很熟悉,我们在安装 FreeBSD 时就使用过它。如果您要让 FreeBSD 使用整个硬盘,请按 [A],接下来请按 [W] 以将设定写入硬盘。在按了 [W] 后,会出现一个确认的窗口,选 [Yes] 即可。最后会出现要您选择所要使用的 Boot Manager,因为这一个硬盘不是要用来开机用的,所以我们选 [None]。写入后,请按 [Q] 离开 Fdisk 的画面,并回到 Configure 画面。接着请离开 sysinstall,再重新执行 sysinstall 以让 sysinstall 重新侦测硬盘设 …\u003c/p\u003e"
January 8, 2010
MySQL优化篇-查询优化
"\u003cp\u003e可以参考一下官方文档中的解释。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://dev.mysql.com/doc/refman/5.1/zh/optimization.html\"\u003ehttp://dev.mysql.com/doc/refman/5.1/zh/optimization.html\u003c/a\u003e\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e优化\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e7.1. 优化概述\u003c/p\u003e\n\u003cp\u003e7.1.1. MySQL设计局限与折衷\u003c/p\u003e\n\u003cp\u003e7.1.2. 为可移植性设计应用程序\u003c/p\u003e\n\u003cp\u003e7.1.3. 我们已将MySQL用在何处?\u003c/p\u003e\n\u003cp\u003e7.1.4. MySQL基准套件\u003c/p\u003e\n\u003cp\u003e7.1.5. 使用自己的基准\u003c/p\u003e\n\u003cp\u003e7.2. 优化SELECT语句和其它查询\u003c/p\u003e\n\u003cp\u003e7.2.1. EXPLAIN语法(获取SELECT相关信息)\u003c/p\u003e\n\u003cp\u003e7.2.2. 估计查询性能\u003c/p\u003e\n\u003cp\u003e7.2.3. SELECT查询的速度\u003c/p\u003e\n\u003cp\u003e7.2.4. MySQL怎样优化WHERE子句\u003c/p\u003e\n\u003cp\u003e7.2.5. 范围优化\u003c/p\u003e\n\u003cp\u003e7.2.6. 索引合并优化\u003c/p\u003e\n\u003cp\u003e7.2.7. MySQL如何优化IS NULL\u003c/p\u003e\n\u003cp\u003e7.2.8. MySQL如何优化DISTINCT\u003c/p\u003e\n\u003cp\u003e7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN\u003c/p\u003e\n\u003cp\u003e7.2.10. MySQL如何优化嵌套Join\u003c/p\u003e\n\u003cp\u003e7.2.11. MySQL如何简化外部联合\u003c/p\u003e\n\u003cp\u003e7.2.12. MySQL如何优化ORDER BY\u003c/p\u003e\n\u003cp\u003e7.2.13. MySQL如何优化GROUP BY …\u003c/p\u003e"
January 8, 2010
解除phpMyAdmin 导入大型MySQL数据库文件大小限制
"\u003cp\u003e今天在WPMZ环境下安装了DEDECMS,朋友将以前网站的数据进行导入时出现了一些问题,提示超出导入大小限制。默认MYSQL只能导入最大2MB的数据,于是我在网上找到了修改的方法,事实证明以下方法是可行的。(修改好后必须重启PHP,可)\n**\nphpMyAdmin 导入大型数据库文件大小限制配置…**\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e修改 php.ini 文件中下列3项的值:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003eupload_max_filesize, memory_limit 和 post_max_size\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eupload_max_filesize,上传文件大小\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ememory_limit 设置内存\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003epost_max_size 提交数据的最大值\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e为你想改的大小值.\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e在 phpMyAdmin 的配置文件中修改或加入这个设置:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e这个文件一般是在phpMyAdmin目录下的config.inc.php文件\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e$cfg[‘ExecTimeLimit’] = 0; // maximum execution time in seconds (0 for no limit)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e默认为300秒钟,改为0表示不受限制\u003c/p\u003e"
January 7, 2010
查看域名是否做反向解析的命令
"\u003cp\u003e查看反向解析是否成功,可用如下命令:nslookup –qt=ptr yourIP,从返回的信息中您可以看到反向解析的结果。\u003c/p\u003e\n\u003cp\u003enslookup –qt=ptr yourIP\u003c/p\u003e\n\u003cp\u003e比如我的域名是mailcenter.com.cn\n我的邮件服务器地址是: 61.144.222.5\n邮箱用户名称格式为username@mailcenter.com.cn\n在邮件服务器上设置邮件系统的HELO为:smtp.mailcenter.com.cn\u003c/p\u003e\n\u003cp\u003e邮件服务器IP为 :61.144.222.5\n找当地电信做61.144.222.这个IP反解析到smtp.mailcenter.com.cn\n在Windows系统中,在运行命令下 输入 cmd 再在打开的窗口输入 nslookup –qt=ptr 61.144.222.5\u003c/p\u003e\n\u003cp\u003e返回信息如下:\nC:\\Documents and Settings\\user\u0026gt;nslookup –qt=ptr 61.144.222.5\nServer: smtp.mailcenter.com.cn\nAddress: 61.144.222.5\u003c/p\u003e\n\u003cp\u003e说明这个IP的反向解析就是成功了。\u003c/p\u003e\n\u003cp\u003e返回信息 …\u003c/p\u003e"