??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国语精品自产拍在线观看,不卡精品国产_亚洲人成在线,亚洲国产中文字幕在线观看 http://m.tkk7.com/void241/category/33136.htmlzh-cnWed, 27 Jul 2016 23:28:22 GMTWed, 27 Jul 2016 23:28:22 GMT60Mysql 常用函数&Ҏhttp://m.tkk7.com/void241/archive/2016/07/22/431278.htmlvoidvoidFri, 22 Jul 2016 03:50:00 GMThttp://m.tkk7.com/void241/archive/2016/07/22/431278.htmlhttp://m.tkk7.com/void241/comments/431278.htmlhttp://m.tkk7.com/void241/archive/2016/07/22/431278.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/431278.htmlhttp://m.tkk7.com/void241/services/trackbacks/431278.htmlFROM_UNIXTIME(UNIX_TIMESTAMP())Q?pȝ当前旉+旉x式化
INSERT INTO t_votes_summary (pkId,votes,systemVotes) 
values(#{po.pkId},#{realTimeVotes},#{po.systemVotes})ON DUPLICATE KEY UPDATE votes=ifnull(votes,0)+#{realTimeVotes},systemVotes=ifnull(systemVotes,0)+#{systemVotes}Q?如果主键重复Q那么修Ҏ?/span>


void 2016-07-22 11:50 发表评论
]]>
mysql 自增序列(?http://m.tkk7.com/void241/archive/2015/04/29/424762.htmlvoidvoidWed, 29 Apr 2015 09:33:00 GMThttp://m.tkk7.com/void241/archive/2015/04/29/424762.htmlhttp://m.tkk7.com/void241/comments/424762.htmlhttp://m.tkk7.com/void241/archive/2015/04/29/424762.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/424762.htmlhttp://m.tkk7.com/void241/services/trackbacks/424762.html阅读全文

void 2015-04-29 17:33 发表评论
]]>
讄mysql允许外部IPq接的解x?/title><link>http://m.tkk7.com/void241/archive/2012/06/09/380397.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Sat, 09 Jun 2012 02:07:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2012/06/09/380397.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/380397.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2012/06/09/380397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/380397.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/380397.html</trackback:ping><description><![CDATA[<div>mysql默认情况下,只允许localhostq接Q如果需要外部IPq接到mysqlQ需要向mysql数据库里?#8220;user”表里d相关授权?<div> <wbr> <wbr> 例如Q让newuser用户使用newpwd密码从IPQ?92.168.1.3L链接到mysql服务?nbsp;<wbr> <wbr><br />  <wbr> <wbr><br />  <wbr> <wbr> 具体步骤Q?br />  <wbr> <wbr> mysql>GRANT ALL PRIVILEGES ON *.* TO <a href="mailto:%27newuser%27@%27192.168.1.3%27">'newuser'@'192.168.1.3'</a> IDENTIFIED BY 'newpwd' WITH GRANT OPTION;<br />  <wbr> <wbr> mysql>flush privileges; <wbr> <wbr> <wbr><br />  <wbr> <wbr><br />  <wbr> <wbr> grant语法Q?br />  <wbr> <wbr> grant 权限名(所有的权限用allQ?on <wbr> <wbr> <wbr> 库名Q?全部Q?表名Q?全部Q?to <wbr> '要授权的用户?a href="mailto:%27@%27%%27%28%">'@'%'(%</a>表示所有的IPQ可以只些一个IPQ?identified by "密码"Q?/div> <div>w䆾查用user?Host, User和Password)3个范围列执行。服务器只有在user表记录的Host和User列匹配客LL名和用户名ƈ且提供了正确的密码时才接受连接?/div> <div>在user表Host值的指定ҎQ?/div> <div> <wbr> <wbr> <wbr> * Host值可以是L名或IPP?localhost'指出本地L?br />  <wbr> <wbr> <wbr> * 你可以在Host列g用通配W字W?#8220;%”?#8220;_”?br />  <wbr> <wbr> <wbr> * Host?%'匚wML名,IHost值等价于'%'。它们的含义与LIKE操作W的模式匚w操作相同。例如,'%'的Hostg所有主机名匚wQ?%.mysql.com'匚wmysql.com?/div> <div>的所有主机?/div></div><img src ="http://m.tkk7.com/void241/aggbug/380397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2012-06-09 10:07 <a href="http://m.tkk7.com/void241/archive/2012/06/09/380397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux本机自动备䆾MYSQLҎhttp://m.tkk7.com/void241/archive/2009/06/23/283746.htmlvoidvoidTue, 23 Jun 2009 07:11:00 GMThttp://m.tkk7.com/void241/archive/2009/06/23/283746.htmlhttp://m.tkk7.com/void241/comments/283746.htmlhttp://m.tkk7.com/void241/archive/2009/06/23/283746.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/283746.htmlhttp://m.tkk7.com/void241/services/trackbacks/283746.htmlMYSQL定期备䆾是一w要的工作Q但人工操作太繁琐,也难避免有所疏漏Q用下面的Ҏ卛_让系l定期备份数据?/p>

1、创建备份文件夹

#cd /www
#makedir backup

2、编写运行脚?/p>

#vi autobackup

写入以下内容Q?/p>

filename=`date +%Y%m%d`
mysql_bin_dir/mysqldump –opt dataname -u user -ppassword | gzip > /www/mysqlbackup/name$filename.gz

保存退?

说明Q?/p>

(1)mysql_bin_dirQmysql的bin路径Q?/p>

(2)datanameQ数据库名;

(3)userQ数据库用户名;

(4)passwordQ用户密码;

(5)nameQ自定义备䆾文g前缀标识?/p>

如上例,自动备份mysql数据库,q以gzip压羃方式存储Q文件名为name20080101.gz的Ş式?/p>

3、ؓ脚本d执行权限

#chmod +x autobackup

4、让crontab来完成定期执行的d

q一步中QRedhat的方法会不一P后面专门l出?/p>

~辑crontabQ?/p>

#vi /etc/crontab

在最后一行中加入Q?/p>

01 5 * * * root /www/autobackup

每天5点运行脚本,也可以修?为其他指定时间?/p>

RedhatҎQ?/p>

Redhat的crontab采用按时间调?个目录(/etc/cron.hourlyQ每时Q?etc/cron.dailyQ每天;/etc/cron.weeklyQ每周;/etc/cron.monthlyQ每月)中脚本出来运行的方式?/p>

Redhat中只需要将刚才~辑的脚本复制到相应的目录即可?/p>

5、重启crontab

#/etc/rc.d/init.d/crond restart

完成

其实原理很简单,自己制作一个脚本,让Linuxpȝ自动q行。我们还可以再扩展一下,~辑一个自动备份网站文件的脚本Q让Linux来完成,每天自动备䆾整个|站Q等{?#8230;…


本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/seosem/archive/2008/03/07/2156074.aspx



void 2009-06-23 15:11 发表评论
]]>
MySQL分区QPartitionQ功能试?/title><link>http://m.tkk7.com/void241/archive/2009/03/26/262063.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Thu, 26 Mar 2009 04:22:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2009/03/26/262063.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/262063.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2009/03/26/262063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/262063.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/262063.html</trackback:ping><description><![CDATA[<p>MySQL分区QPartitionQ功能试?br /> 2008-07-06 20:02目录<br /> [概述]<br /> [分区表和未分试验q程]<br /> [分区命o详解]</p> <p>[概述]</p> <p>?.1开始对分区(Partition)有支持,6.0应比较稳?/p> <p>= 水^分区Q根据列属性按行分Q?<br /> 举个单例子:一个包含十q发记录的表可以被分区为十个不同的分区Q每个分区包含的是其中一q的记录?/p> <p>=== 水^分区的几U模式:===<br /> * RangeQ范_ – q种模式允许DBA数据划分不同范围。例如DBA可以一个表通过q䆾划分成三个分区,80q代Q?980'sQ的数据Q?0q代Q?990'sQ的数据以及M?000q_包括2000q_后的数据?/p> <p>* HashQ哈希) – q中模式允许DBA通过对表的一个或多个列的Hash Keyq行计算Q最后通过q个Hash码不同数值对应的数据区域q行分区Q。例如DBA可以建立一个对表主键进行分区的表?/p> <p>* KeyQ键| – 上面Hash模式的一Ug伸,q里的Hash Key是MySQLpȝ产生的?/p> <p>* ListQ预定义列表Q?– q种模式允许pȝ通过DBA定义的列表的值所对应的行数据q行分割。例如:DBA建立了一个横跨三个分区的表,分别Ҏ2004q?005q和2006q值所对应的数据?/p> <p>* CompositeQ复合模式) - 很神U吧Q哈哈,其实是以上模式的l合使用而已Q就不解释了。D例:在初始化已经q行了Range范围分区的表上,我们可以对其中一个分区再q行hash哈希分区?/p> <p>= 垂直分区Q按列分Q?<br /> 举个单例子:一个包含了大text和BLOB列的表,q些text和BLOB列又不经常被讉KQ这时候就要把q些不经怋用的text和BLOB了划分到另一个分区,在保证它们数据相x的同时q能提高讉K速度?/p> <p><br /> [分区表和未分试验q程]</p> <p>*创徏分区?按日期的q䆾拆分<br /> mysql> CREATE TABLE part_tab ( c1 int default NULL, c2 varchar(30) default NULL, c3 date default NULL) engine=myisam <br /> PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995),<br /> PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,<br /> PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,<br /> PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,<br /> PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,<br /> PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),<br /> PARTITION p11 VALUES LESS THAN MAXVALUE ); <br /> 注意最后一行,考虑到可能的最大?/p> <p>*创徏未分<br /> mysql> create table no_part_tab (c1 int(11) default NULL,c2 varchar(30) default NULL,c3 date default NULL) engine=myisam;</p> <p>*通过存储q程灌入800万条试数据</p> <p>mysql> set sql_mode=''; /* 如果创徏存储q程p|Q则先需讄此变? bug? */</p> <p>mysql> delimiter //   /* 讑֮语句l结Wؓ //Q因存储q程语句?l束 */<br /> mysql> CREATE PROCEDURE load_part_tab()<br />        begin<br />     declare v int default 0;<br />     while v < 8000000<br />     do<br />         insert into part_tab<br />         values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));<br />          set v = v + 1;<br />     end while;<br />     end<br />     //<br /> mysql> delimiter ;<br /> mysql> call load_part_tab();<br /> Query OK, 1 row affected (8 min 17.75 sec)<br /> mysql> insert into no_part_tab select * from part_tab;<br /> Query OK, 8000000 rows affected (51.59 sec)<br /> Records: 8000000 Duplicates: 0 Warnings: 0</p> <p>* 试SQL性能<br /> mysql> select count(*) from part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31';      <br /> +----------+<br /> | count(*) |<br /> +----------+<br /> |   795181 |<br /> +----------+<br /> 1 row in set (0.55 sec)<br /> mysql> select count(*) from no_part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31'; <br /> +----------+<br /> | count(*) |<br /> +----------+<br /> |   795181 |<br /> +----------+<br /> 1 row in set (4.69 sec)<br /> l果表明分区表比未分的执行时间少90%?/p> <p>* 通过explain语句来分析执行情?br /> mysql > explain select count(*) from no_part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31'\G<br /> /* l尾的\G使得mysql的输出改为列模式 */                    <br /> *************************** 1. row ***************************<br />            id: 1<br /> select_type: SIMPLE<br />         table: no_part_tab<br />          type: ALL<br /> possible_keys: NULL<br />           key: NULL<br />       key_len: NULL<br />           ref: NULL<br />          rows: 8000000<br />         Extra: Using where<br /> 1 row in set (0.00 sec)</p> <p>mysql> explain select count(*) from part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31'\G <br /> *************************** 1. row ***************************<br />            id: 1<br /> select_type: SIMPLE<br />         table: part_tab<br />          type: ALL<br /> possible_keys: NULL<br />           key: NULL<br />       key_len: NULL<br />           ref: NULL<br />          rows: 798458<br />         Extra: Using where<br /> 1 row in set (0.00 sec)<br /> explain语句昄了SQL查询要处理的记录数目</p> <p>* 试验创徏索引后情?br /> mysql> create index idx_of_c3 on no_part_tab (c3);<br /> Query OK, 8000000 rows affected (1 min 18.08 sec)<br /> Records: 8000000 Duplicates: 0 Warnings: 0</p> <p>mysql> create index idx_of_c3 on part_tab (c3);<br /> Query OK, 8000000 rows affected (1 min 19.19 sec)<br /> Records: 8000000 Duplicates: 0 Warnings: 0<br /> 创徏索引后的数据库文件大列表:<br /> 2008-05-24 09:23             8,608 no_part_tab.frm<br /> 2008-05-24 09:24       255,999,996 no_part_tab.MYD<br /> 2008-05-24 09:24        81,611,776 no_part_tab.MYI<br /> 2008-05-24 09:25                 0 part_tab#P#p0.MYD<br /> 2008-05-24 09:26             1,024 part_tab#P#p0.MYI<br /> 2008-05-24 09:26        25,550,656 part_tab#P#p1.MYD<br /> 2008-05-24 09:26         8,148,992 part_tab#P#p1.MYI<br /> 2008-05-24 09:26        25,620,192 part_tab#P#p10.MYD<br /> 2008-05-24 09:26         8,170,496 part_tab#P#p10.MYI<br /> 2008-05-24 09:25                 0 part_tab#P#p11.MYD<br /> 2008-05-24 09:26             1,024 part_tab#P#p11.MYI<br /> 2008-05-24 09:26        25,656,512 part_tab#P#p2.MYD<br /> 2008-05-24 09:26         8,181,760 part_tab#P#p2.MYI<br /> 2008-05-24 09:26        25,586,880 part_tab#P#p3.MYD<br /> 2008-05-24 09:26         8,160,256 part_tab#P#p3.MYI<br /> 2008-05-24 09:26        25,585,696 part_tab#P#p4.MYD<br /> 2008-05-24 09:26         8,159,232 part_tab#P#p4.MYI<br /> 2008-05-24 09:26        25,585,216 part_tab#P#p5.MYD<br /> 2008-05-24 09:26         8,159,232 part_tab#P#p5.MYI<br /> 2008-05-24 09:26        25,655,740 part_tab#P#p6.MYD<br /> 2008-05-24 09:26         8,181,760 part_tab#P#p6.MYI<br /> 2008-05-24 09:26        25,586,528 part_tab#P#p7.MYD<br /> 2008-05-24 09:26         8,160,256 part_tab#P#p7.MYI<br /> 2008-05-24 09:26        25,586,752 part_tab#P#p8.MYD<br /> 2008-05-24 09:26         8,160,256 part_tab#P#p8.MYI<br /> 2008-05-24 09:26        25,585,824 part_tab#P#p9.MYD<br /> 2008-05-24 09:26         8,159,232 part_tab#P#p9.MYI<br /> 2008-05-24 09:25             8,608 part_tab.frm<br /> 2008-05-24 09:25                68 part_tab.par</p> <p>* 再次试SQL性能<br /> mysql> select count(*) from no_part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31';    +----------+<br /> | count(*) |<br /> +----------+<br /> |   795181 |<br /> +----------+<br /> 1 row in set (2.42 sec)   /* 为原?.69 sec ?1%*/   <br /> 重启mysql ( net stop mysql, net start mysql)后,查询旉降ؓ0.89 sec,几乎与分相同?/p> <p>mysql> select count(*) from part_tab where c3 > date '1995-01-01' and c3 < date '1995-12-31'; <br /> +----------+<br /> | count(*) |<br /> +----------+<br /> |   795181 |<br /> +----------+<br /> 1 row in set (0.86 sec)</p> <p>* 更进一步的试验<br /> ** 增加日期范围<br /> mysql> select count(*) from no_part_tab where c3 > date '1995-01-01' and c3 < date '1997-12-31';<br /> +----------+<br /> | count(*) |<br /> +----------+<br /> | 2396524 |<br /> +----------+<br /> 1 row in set (5.42 sec)</p> <p>mysql> select count(*) from part_tab where c3 > date '1995-01-01' and c3 < date '1997-12-31';<br /> +----------+<br /> | count(*) |<br /> +----------+<br /> | 2396524 |<br /> +----------+<br /> 1 row in set (2.63 sec)<br /> ** 增加未烦引字D|?br /> mysql> select count(*) from part_tab where c3 > date '1995-01-01' and c3 < date<br /> '1996-12-31' and c2='hello';<br /> +----------+<br /> | count(*) |<br /> +----------+<br /> |        0 |<br /> +----------+<br /> 1 row in set (0.75 sec)</p> <p>mysql> select count(*) from no_part_tab where c3 > date '1995-01-01' and c3 < da<br /> te '1996-12-31' and c2='hello';<br /> +----------+<br /> | count(*) |<br /> +----------+<br /> |        0 |<br /> +----------+<br /> 1 row in set (11.52 sec)</p> <p><br /> = 初步l论 =<br /> * 分区和未分区占用文gI间大致相同 Q数据和索引文gQ?br /> * 如果查询语句中有未徏立烦引字D,分区旉q远优于未分区时?br /> * 如果查询语句中字D徏立了索引Q分区和未分区的差别~小Q分区略优于未分区?/p> <p><br /> = 最l结?=<br /> * 对于大数据量Q徏议用分区功能?br /> * 去除不必要的字段<br /> * Ҏ手册Q?增加myisam_max_sort_file_size 会增加分区性能</p> <p>[分区命o详解]</p> <p>= 分区例子 = <br /> * RANGE cd</p> <p>CREATE TABLE users (<br />        uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />        name VARCHAR(30) NOT NULL DEFAULT '',<br />        email VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY RANGE (uid) (<br />        PARTITION p0 VALUES LESS THAN (3000000)<br />        DATA DIRECTORY = '/data0/data'<br />        INDEX DIRECTORY = '/data1/idx',</p> <p>       PARTITION p1 VALUES LESS THAN (6000000)<br />        DATA DIRECTORY = '/data2/data'<br />        INDEX DIRECTORY = '/data3/idx',</p> <p>       PARTITION p2 VALUES LESS THAN (9000000)<br />        DATA DIRECTORY = '/data4/data'<br />        INDEX DIRECTORY = '/data5/idx',</p> <p>       PARTITION p3 VALUES LESS THAN MAXVALUE     DATA DIRECTORY = '/data6/data' <br />        INDEX DIRECTORY = '/data7/idx'<br /> );</p> <p>在这里,用戯分成4个分区,以每300万条记录为界限,每个分区都有自己独立的数据、烦引文件的存放目录Q与此同Ӟq些目录所在的物理盘分区可能也都是完全独立的Q可以提高磁盘IO吞吐量?br />       <br /> * LIST cd</p> <p>CREATE TABLE category (<br />      cid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />      name VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY LIST (cid) (<br />      PARTITION p0 VALUES IN (0,4,8,12)<br />      DATA DIRECTORY = '/data0/data' <br />      INDEX DIRECTORY = '/data1/idx',<br />      <br />      PARTITION p1 VALUES IN (1,5,9,13)<br />      DATA DIRECTORY = '/data2/data'<br />      INDEX DIRECTORY = '/data3/idx',<br />      <br />      PARTITION p2 VALUES IN (2,6,10,14)<br />      DATA DIRECTORY = '/data4/data'<br />      INDEX DIRECTORY = '/data5/idx',<br />      <br />      PARTITION p3 VALUES IN (3,7,11,15)<br />      DATA DIRECTORY = '/data6/data'<br />      INDEX DIRECTORY = '/data7/idx'<br /> );  </p> <p>分成4个区Q数据文件和索引文g单独存放?/p> <p>* HASH cd     <br /> CREATE TABLE users (<br />      uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />      name VARCHAR(30) NOT NULL DEFAULT '',<br />      email VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY HASH (uid) PARTITIONS 4 (<br />      PARTITION p0<br />      DATA DIRECTORY = '/data0/data'<br />      INDEX DIRECTORY = '/data1/idx',</p> <p>     PARTITION p1<br />      DATA DIRECTORY = '/data2/data'<br />      INDEX DIRECTORY = '/data3/idx',</p> <p>     PARTITION p2<br />      DATA DIRECTORY = '/data4/data'<br />      INDEX DIRECTORY = '/data5/idx',</p> <p>     PARTITION p3<br />      DATA DIRECTORY = '/data6/data'<br />      INDEX DIRECTORY = '/data7/idx'<br /> );<br /> 分成4个区Q数据文件和索引文g单独存放?/p> <p>例子Q?br /> CREATE TABLE ti2 (id INT, amount DECIMAL(7,2), tr_date DATE)<br />     ENGINE=myisam<br />     PARTITION BY HASH( MONTH(tr_date) )<br />     PARTITIONS 6;</p> <p>CREATE PROCEDURE load_ti2()<br />        begin<br />     declare v int default 0;<br />     while v < 80000<br />     do<br />         insert into ti2<br />         values (v,'3.14',adddate('1995-01-01',(rand(v)*3652) mod 365));<br />          set v = v + 1;<br />     end while;<br />     end<br />     //</p> <p> </p> <p>* KEY cd<br /> CREATE TABLE users (<br />      uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />      name VARCHAR(30) NOT NULL DEFAULT '',<br />      email VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY KEY (uid) PARTITIONS 4 (<br />      PARTITION p0<br />      DATA DIRECTORY = '/data0/data'<br />      INDEX DIRECTORY = '/data1/idx',<br />      <br />      PARTITION p1<br />      DATA DIRECTORY = '/data2/data' <br />      INDEX DIRECTORY = '/data3/idx',<br />      <br />      PARTITION p2 <br />      DATA DIRECTORY = '/data4/data'<br />      INDEX DIRECTORY = '/data5/idx',<br />      <br />      PARTITION p3 <br />      DATA DIRECTORY = '/data6/data'<br />      INDEX DIRECTORY = '/data7/idx'<br /> );   <br /> 分成4个区Q数据文件和索引文g单独存放?/p> <p>* 子分?br /> 子分区是针对 RANGE/LIST cd的分中每个分区的再次分割。再ơ分割可以是 HASH/KEY {类型。例如:<br /> CREATE TABLE users (<br />      uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />      name VARCHAR(30) NOT NULL DEFAULT '',<br />      email VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY RANGE (uid) SUBPARTITION BY HASH (uid % 4) SUBPARTITIONS 2(<br />      PARTITION p0 VALUES LESS THAN (3000000)<br />      DATA DIRECTORY = '/data0/data'<br />      INDEX DIRECTORY = '/data1/idx',</p> <p>     PARTITION p1 VALUES LESS THAN (6000000)<br />      DATA DIRECTORY = '/data2/data'<br />      INDEX DIRECTORY = '/data3/idx'<br /> );</p> <p>?RANGE 分区再次q行子分区划分,子分区采?HASH cd?/p> <p>或?/p> <p>CREATE TABLE users (<br />      uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />      name VARCHAR(30) NOT NULL DEFAULT '',<br />      email VARCHAR(30) NOT NULL DEFAULT ''<br /> )<br /> PARTITION BY RANGE (uid) SUBPARTITION BY KEY(uid) SUBPARTITIONS 2(<br />      PARTITION p0 VALUES LESS THAN (3000000)<br />      DATA DIRECTORY = '/data0/data'<br />      INDEX DIRECTORY = '/data1/idx',</p> <p>     PARTITION p1 VALUES LESS THAN (6000000)<br />      DATA DIRECTORY = '/data2/data'<br />      INDEX DIRECTORY = '/data3/idx'<br /> );</p> <p>?RANGE 分区再次q行子分区划分,子分区采?KEY cd?/p> <p>= 分区理 =</p> <p>    * 删除分区</p> <p>      ALERT TABLE users DROP PARTITION p0;</p> <p>      删除分区 p0?br />     * 重徏分区<br />           o RANGE 分区重徏</p> <p>            ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES LESS THAN (6000000));</p> <p>            原来的 p0,p1 分区合ƈhQ放到新?p0 分区中?br />           o LIST 分区重徏</p> <p>            ALTER TABLE users REORGANIZE PARTITION p0,p1 INTO (PARTITION p0 VALUES IN(0,1,4,5,8,9,12,13));</p> <p>            原来的 p0,p1 分区合ƈhQ放到新?p0 分区中?br />           o HASH/KEY 分区重徏</p> <p>            ALTER TABLE users REORGANIZE PARTITION COALESCE PARTITION 2;</p> <p>            ?REORGANIZE 方式重徏分区的数量变?Q在q里数量只能减少不能增加。想要增加可以用 ADD PARTITION Ҏ?br />     * 新增分区<br />           o 新增 RANGE 分区</p> <p>            ALTER TABLE category ADD PARTITION (PARTITION p4 VALUES IN (16,17,18,19)<br />             DATA DIRECTORY = '/data8/data'<br />             INDEX DIRECTORY = '/data9/idx');</p> <p>            新增一个RANGE分区?br />           o 新增 HASH/KEY 分区</p> <p>            ALTER TABLE users ADD PARTITION PARTITIONS 8;</p> <p>            分区L扩展?个?/p> <p>[ l已有的表加上分?]</p> <p>alter table results partition by RANGE (month(ttime)) <br /> (PARTITION p0 VALUES LESS THAN (1),<br /> PARTITION p1 VALUES LESS THAN (2) , PARTITION p2 VALUES LESS THAN (3) ,<br /> PARTITION p3 VALUES LESS THAN (4) , PARTITION p4 VALUES LESS THAN (5) ,<br /> PARTITION p5 VALUES LESS THAN (6) , PARTITION p6 VALUES LESS THAN (7) ,<br /> PARTITION p7 VALUES LESS THAN (8) , PARTITION p8 VALUES LESS THAN (9) ,<br /> PARTITION p9 VALUES LESS THAN (10) , PARTITION p10 VALUES LESS THAN (11),<br /> PARTITION p11 VALUES LESS THAN (12),<br /> PARTITION P12 VALUES LESS THAN (13) );</p> <p>默认分区限制分区字段必须是主键(PRIMARY KEY)的一部分Qؓ了去除此<br /> 限制Q?br /> [Ҏ1] 使用ID<br /> mysql> ALTER TABLE np_pk<br />     ->     PARTITION BY HASH( TO_DAYS(added) )<br />     ->     PARTITIONS 4;<br /> ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function</p> <p>However, this statement using the id column for the partitioning column is valid, as shown here:</p> <p>mysql> ALTER TABLE np_pk<br />     ->     PARTITION BY HASH(id)<br />     ->     PARTITIONS 4;<br /> Query OK, 0 rows affected (0.11 sec)<br /> Records: 0 Duplicates: 0 Warnings: 0</p> <p>[Ҏ2] 原有PKL生成新PK<br /> mysql> alter table results drop PRIMARY KEY;<br /> Query OK, 5374850 rows affected (7 min 4.05 sec)<br /> Records: 5374850 Duplicates: 0 Warnings: 0</p> <p>mysql> alter table results add PRIMARY KEY(id, ttime);<br /> Query OK, 5374850 rows affected (6 min 14.86 sec)<br /> Records: 5374850 Duplicates: 0 Warnings: 0</p> <img src ="http://m.tkk7.com/void241/aggbug/262063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2009-03-26 12:22 <a href="http://m.tkk7.com/void241/archive/2009/03/26/262063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySql帐户的创Z删除、口令更?/title><link>http://m.tkk7.com/void241/archive/2008/08/20/223165.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Wed, 20 Aug 2008 02:08:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2008/08/20/223165.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/223165.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2008/08/20/223165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/223165.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/223165.html</trackback:ping><description><![CDATA[. 创徏用户账户可以用三U方式创?span>MySQL</span>账户Q? <p><span>1 </span>使用<span>GRANT</span>语句</p> <p><span>2 </span>直接操作<span>MySQL</span>授权?/p> <p>3 使用CREATE USER语句<br /> </p> <p>最好的Ҏ是?span>GRANT</span>语句Q因h_Q错误少?/p> <p>创徏账户的其它方法是使用<span>MySQL</span>账户理功能的第三方E序?span>phpMyAdmin</span>x一个程序?/p> <p>下面的示例说明如何?strong><span>MySQL</span></strong>客户端程序来讄新用戗ؓ了更改,你必M<span>MySQL </span><span>root</span>用户q接<span>MySQL</span>服务器,q且<span>root</span>账户必须?span>mysql</span>数据库的<span>INSERT</span>权限?span>RELOAD</span>理权限?/p> <p>首先Q?strong><span>MySQL</span></strong>E序?span>MySQL </span><span>root</span>用户来连接服务器Q?/p> <pre><span>shell> </span><span>MySQL<strong> --user=root </strong>MySQL</span></pre> <p>如果你ؓ<span>root</span>账户指定了密码,q需要ؓ?strong><span>MySQL</span></strong>命o和本节中的其它命令提?span>--password</span>?span>-p</span>选项?/p> <p><span>?span>root</span></span>q接到服务器上后Q可以添加新账户。下面的语句使用<span>GRANT</span>来设|四个新账户Q?/p> <pre><span>mysql> </span><span><strong><span>GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>IDENTIFIED BY 'some_pass' WITH GRANT OPTION;</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>IDENTIFIED BY 'some_pass' WITH GRANT OPTION;</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>GRANT USAGE ON *.* TO 'dummy'@'localhost';</span></strong></span></pre> <br /> <p>除了<span>GRANT</span>Q你可以直接?span>INSERT</span>语句创徏相同的̎P然后使用<span>FLUSH PRIVILEGES</span>告诉服务器重载授权表Q?/p> <pre><span>shell> </span><span><strong><span>mysql --user=root mysql</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>INSERT INTO user</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>VALUES('localhost','monty',PASSWORD('some_pass'),</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>INSERT INTO user</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>VALUES('%','monty',PASSWORD('some_pass'),</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>INSERT INTO user SET Host='localhost',User='admin',</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>Reload_priv='Y', Process_priv='Y';</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>INSERT INTO user (Host,User,Password)</span></strong></span></pre> <pre><span>    ->     </span><span><strong><span>VALUES('localhost','dummy','');</span></strong></span></pre> <pre><span>mysql> </span><span><strong><span>FLUSH PRIVILEGES;</span></strong></span></pre> <p>当你?span>INSERT</span>创徏账户时?span>FLUSH PRIVILEGES</span>的原因是告诉服务器重L权表。否则,只有重启服务器后更改方会被注意到。?<span>GRANT</span>Q则不需要?span>FLUSH PRIVILEGES</span>?/p> <p>?span>INSERT</span>使用<span>PASSWORD()</span>函数是ؓ了加密密码?span>GRANT</span>语句Z加密密码Q因此不需?span>PASSWORD()</span>?/p> <p><span>'Y'</span>值启用̎h限。对?span>admin</span>账户Q还可以使用更加可读?span>INSERT</span>扩充的语法(使用<span>SET</span>Q?/p> <p>在ؓ<span>dummy</span>账户?span>INSERT</span>语句中,只有<span>user</span>表中?span>Host</span>?span>User</span>?span>Password</span>列记录ؓ指定的倹{没有一个权限列为显式设|,因此<span>MySQL</span>它们均指定?默认?span>'N'</span>。这L同于<span>GRANT USAGE</span>的操作?/p> <p>h意要讄用户账户Q只需要创Z个权限列讄?span>'Y'</span>?span>user</span>表条目?span>user</span>表权限ؓ全局权限Q因此其?授权表不再需要条目?/p> W三U方法,CREATE USER语句?br /> <pre><span>shell> </span><span><strong><span>mysql --user=root<br /> </span></strong></span><span>mysql> create user 'jian'@'localhost' identified by 'my123'Q?账户密码讄和grant语句cM<br /> </span></pre> <h3>2.删除用户账户</h3> <h3>要想U除账户Q应使用<span>DROP USER</span>语句.</h3> <div> <pre><span>mysql></span>drop user <a href="mailto:'jian'@'localhost'">'jian'@'localhost'</a>;</pre> </div> <h3>3.更改账户口o</h3> <p>讄MySQL用户帐号密码的方法有三种Q?/p> <ul type="disc"> <li> <p>使用mysqladminE序Q?/p> <pre>% mysqladmin -h localhost -u root password "password" #讄在本Crootw分d的密?br /> % mysqladmin -h remote -u root password "password" #讄q程L以rootw分d的密?br /> </pre> <p>在初始设|时Q这两条语句都要q行Q以保数据库本地访问和|络讉K的安全?/p> <li> <p>通过set passwordq条SQL语句讄Q?/p> <pre>mysql> set password for 'root'@'localhost' = password('password');<br /> mysql> set password for 'root'@'remote' = password('password');<br /> </pre> <li> <p>直接修改user权限表:</p> <pre>mysql> use mysql;<br /> mysql> update user set password=password('password') where user='root';<br /> mysql> flush privileges; #重蝲权限表,使修攚w上生?br /> </pre> </li> </ul> <img src ="http://m.tkk7.com/void241/aggbug/223165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2008-08-20 10:08 <a href="http://m.tkk7.com/void241/archive/2008/08/20/223165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下mysqlq程登陆http://m.tkk7.com/void241/archive/2008/07/28/217920.htmlvoidvoidSun, 27 Jul 2008 18:22:00 GMThttp://m.tkk7.com/void241/archive/2008/07/28/217920.htmlhttp://m.tkk7.com/void241/comments/217920.htmlhttp://m.tkk7.com/void241/archive/2008/07/28/217920.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/217920.htmlhttp://m.tkk7.com/void241/services/trackbacks/217920.html解决ҎQ?br />
1?改表法。可能是你的帐号不允总q程登陆Q只能在localhost。这个时候只要在localhost的那台电脑,dmysql后,更改 "mysql" 数据库里?"user" 表里?"host" ,?localhost"改称"%"
mysql -u root -p123
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

2. 授权法。例如,你想kevin使用mypassword从Q何主接到mysql服务器的话?br /> GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户kevin从ip?92.168.101.234的主接到mysql服务器,q用mypassword作ؓ密码
GRANT ALL PRIVILEGES ON *.* TO 'kevin'@'192.168.101.234' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

3.如果按照上面q样做还不行(一般好像在windows下那样就可以?那就修改下面q个配置文g?我是在linux环境?大家可以扑ֈ自己mysql安装目录下的相应配置文g)
vi  /etc/mysql/my.cnf
注释?br /> #bind-address       = 127.0.0.1


void 2008-07-28 02:22 发表评论
]]>
MySql备䆾http://m.tkk7.com/void241/archive/2008/07/19/216007.htmlvoidvoidSat, 19 Jul 2008 04:21:00 GMThttp://m.tkk7.com/void241/archive/2008/07/19/216007.htmlhttp://m.tkk7.com/void241/comments/216007.htmlhttp://m.tkk7.com/void241/archive/2008/07/19/216007.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/216007.htmlhttp://m.tkk7.com/void241/services/trackbacks/216007.html备䆾与恢?br /> 常规备䆾命o是mysqldump,q里以tm数据库ؓ例,做简单介l,详细资料参?br /> http://info.mysql.cn/install/2006/0410/5521.html
备䆾Q?br /> #mysqldump -u root -p tm > tm_20060101.sql  
按提C入密码,q就把tm数据库所有的表结构和数据备䆾到tm_20060101.sql了,因ؓ要总进?strong style="color: black; background-color: #a0ffff">备䆾工作Q如果数据量大会占用很大I间Q?br /> q是可以利用gzip压羃数据Q命令如下:
#mysqldump -u root -p tm | gzip > tm_20060101.sql.gz
q可?strong style="color: black; background-color: #a0ffff">备䆾到远E机器,?h制定Q如
#mysqldump -u root -p tm > tm_20060101.sql -h xxx.xxx.xxx.xxx
可以直接备䆾到IP地址为xxx.xxx.xxx.xxx的远E计机?br /> pȝ崩溃Q重建系l,或恢复数据库Ӟ可以q样恢复数据Q?br /> #mysql -u root -p tm < tm_20060101.sql
(win os):mysql.exe -uroot -ptm --default-character-set=utf8 < tm_20060101.sql
从压~文件直接恢复:
#gunzip < tm_20060101.sql.gz | mysql -u root -p tm
QQ如何启动和关闭mysql?
AQlinux下:比如我的mysql是用源码方式安装?usr/local/mysql
自动Q将/usr/local/mysql/share/mysql/mysql.server拯?etc/rc.d/init.d/下,然后
chkconfig --add mysql.server可以开机就启动mysql服务了?br /> 手动Q以rootw䆾执行/usr/local/mysql/bin/mysqld_safe --user=mysql
windows下:
自动Q?br /> 用cmd方式Q到mysql安装路径的bin文g夹下Q执行:mysqld-nt --install
手动Q直接到?strong style="color: black; background-color: #ffff66">mysql安装路径的bin文g夹下执行net start mysql卛_?br /> 如果不想?strong style="color: black; background-color: #ffff66">mysql在计机启动时候就启动服务Q执行:mysqld-nt --remove
也可以在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中删除对应服务ƈ重启计算机?br /> 关闭mysqlQmysqladmin -uroot -p shutdown
启动mysqlQ?br /> mysqld-nt --install
net start mysql
安装完后Q从win下用mysql-odbcq接Ӟ出现
- Client does not support authentication protocol requested by server; consider upgrading MySQL client
l查Q?br /> AQ你使用的数据库?.1以上Q用命o行连?strong style="color: black; background-color: #ffff66">MySQL数据库后Q执行下面的命oQ?br /> UPDATE mysql.user SET password=OLD_PASSWORD("your_password") WHERE Host="your_host" AND User="your_username" ;
卛_解决?br />
your_passwordQ改成你q接数据库的密码Q比?123
your_hostQ改成你q接数据库的LQ如果是本地的话Q就是localhost
your_usernameQ改成你q接数据库的用户Q比?root


void 2008-07-19 12:21 发表评论
]]>
MySQL 备䆾和恢?/title><link>http://m.tkk7.com/void241/archive/2008/07/19/216006.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Sat, 19 Jul 2008 04:21:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2008/07/19/216006.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/216006.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2008/07/19/216006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/216006.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/216006.html</trackback:ping><description><![CDATA[<p>本文讨论 MySQL 的备份和恢复机制Q以及如何维护数据表Q包括最主要的两U表cdQ?code><font face="NSimsun">MyISAM</font></code> ?<code><font face="NSimsun">Innodb</font></code>Q文中设计的 MySQL 版本?5.0.22?/p> <p>目前 MySQL 支持的免费备份工hQ?code><font face="NSimsun">mysqldump、mysqlhotcopy</font></code>Q还可以?SQL 语法q行备䆾Q?code><font face="NSimsun">BACKUP TABLE</font></code> 或?<code><font face="NSimsun">SELECT INTO OUTFILE</font></code>Q又或者备?code><font face="NSimsun">二进制日志(binlogQ?/font></code>Q还可以?code><font face="NSimsun">直接拯数据文g和相关的配置文g</font></code>。MyISAM 表是保存成文件的形式Q因此相Ҏ较容易备份,上面提到的几U方法都可以使用?code><font face="NSimsun">Innodb</font></code> 所有的表都保存在同一个数据文?<code><font face="NSimsun">ibdata1</font></code> 中(也可能是多个文gQ或者是独立的表I间文gQ,相对来说比较不好备䆾Q免费的Ҏ可以?code><font face="NSimsun">拯数据文g</font></code>?code><font face="NSimsun">备䆾 binlog</font></code>Q或者用 <code><font face="NSimsun">mysqldump</font></code>?/p> <h3>1、mysqldump</h3> <h4>1.1 备䆾</h4> <p><code><font face="NSimsun">mysqldump</font></code> 是采用SQLU别的备份机Ӟ它将数据表导?SQL 脚本文gQ在不同?MySQL 版本之间升时相Ҏ较合适,q也是最常用的备份方法?br /> 现在来讲一?<code><font face="NSimsun">mysqldump</font></code> 的一些主要参敎ͼ</p> <ul type="1"> <li>--compatible=name <p>它告?mysqldumpQ导出的数据和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以ؓ <code><font face="NSimsun">ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options</font></code> {,要用几个|用逗号它们隔开。当然了Q它q不保证能完全兼容,而是量兼容?/p> <li>--complete-insertQ?c <p>导出的数据采用包含字D名的完?<code><font face="NSimsun">INSERT</font></code> 方式Q也是把所有的值都写在一行。这么做能提高插入效率,但是可能会受?<code><font face="NSimsun">max_allowed_packet</font></code> 参数的媄响而导致插入失败。因此,需要}慎用该参数Q至我不推荐?/p> <li>--default-character-set=charset <p>指定导出数据旉用何U字W集Q如果数据表不是采用默认?<code><font face="NSimsun">latin1</font></code> 字符集的话,那么导出时必L定该选项Q否则再ơ导入数据后生ؕ码问题?/p> <li>--disable-keys <p>告诉 <code><font face="NSimsun">mysqldump</font></code> ?<code><font face="NSimsun">INSERT</font></code> 语句的开头和l尾增加 <code><font face="NSimsun">/*!40000 ALTER TABLE table DISABLE KEYS */;</font></code> ?<code><font face="NSimsun">/*!40000 ALTER TABLE table ENABLE KEYS */;</font></code> 语句Q这能大大提高插入语句的速度Q因为它是在插入完所有数据后才重建烦引的。该选项只适合 <code><font face="NSimsun">MyISAM</font></code> 表?/p> <li>--extended-insert = true|false <p>默认情况下,<code><font face="NSimsun">mysqldump</font></code> 开?<code><font face="NSimsun">--complete-insert</font></code> 模式Q因此不想用它的的话Q就使用本选项Q设定它的gؓ <code><font face="NSimsun">false</font></code> 卛_?/p> <li>--hex-blob <p>使用十六q制格式导出二进制字W串字段。如果有二进制数据就必须使用本选项。媄响到的字D늱型有 <code><font face="NSimsun">BINARY、VARBINARY、BLOB</font></code>?/p> <li>--lock-all-tablesQ?x <p>在开始导Z前,提交h锁定所有数据库中的所有表Q以保证数据的一致性。这是一个全局读锁Qƈ且自动关?<code><font face="NSimsun">--single-transaction</font></code> ?<code><font face="NSimsun">--lock-tables</font></code> 选项?/p> <li>--lock-tables <p>它和 <code><font face="NSimsun">--lock-all-tables</font></code> cMQ不q是锁定当前导出的数据表Q而不是一下子锁定全部库下的表。本选项只适用?<code><font face="NSimsun">MyISAM</font></code> 表,如果?<code><font face="NSimsun">Innodb</font></code> 表可以用 <code><font face="NSimsun">--single-transaction</font></code> 选项?/p> <li>--no-create-infoQ?t <p>只导出数据,而不d <code><font face="NSimsun">CREATE TABLE</font></code> 语句?/p> <li>--no-dataQ?d <p>不导ZQ何数据,只导出数据库表结构?/p> <li>--opt <p>q只是一个快捷选项Q等同于同时d <code><font face="NSimsun">--add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset</font></code> 选项。本选项能让 <code><font face="NSimsun">mysqldump</font></code> 很快的导出数据,q且导出的数据能很快导回。该选项默认开启,但可以用 <code><font face="NSimsun">--skip-opt</font></code> 用。注意,如果q行 <code><font face="NSimsun">mysqldump</font></code> 没有指定 <code><font face="NSimsun">--quick</font></code> ?<code><font face="NSimsun">--opt</font></code> 选项Q则会将整个l果集放在内存中。如果导出大数据库的话可能会出现问题?/p> <li>--quickQ?q <p>该选项在导出大表时很有用,它强?<code><font face="NSimsun">mysqldump</font></code> 从服务器查询取得记录直接输出而不是取得所有记录后它们缓存到内存中?/p> <li>--routinesQ?R <p>导出存储q程以及自定义函数?/p> <li>--single-transaction <p>该选项在导出数据之前提交一?<code><font face="NSimsun">BEGIN</font></code> SQL语句Q?code><font face="NSimsun">BEGIN</font></code> 不会dM应用E序且能保证导出时数据库的一致性状态。它只适用于事务表Q例?<code><font face="NSimsun">InnoDB</font></code> ?<code><font face="NSimsun">BDB</font></code>?br /> 本选项?<code><font face="NSimsun">--lock-tables</font></code> 选项是互斥的Q因?<code><font face="NSimsun">LOCK TABLES</font></code> 会M挂v的事务隐含提交?br /> 要想导出大表的话Q应l合使用 <code><font face="NSimsun">--quick</font></code> 选项?/p> <li>--triggers <p>同时导出触发器。该选项默认启用Q用 <code><font face="NSimsun">--skip-triggers</font></code> 用它?/p> </li> </ul> <p>其他参数详情请参考手册,我通常使用以下 SQL 来备?<code><font face="NSimsun">MyISAM</font></code> 表:</p> <pre>/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -R --hex-blob -x db_name > db_name.sql</pre> <p>使用以下 SQL 来备?<code><font face="NSimsun">Innodb</font></code> 表:</p> <pre>/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -R --hex-blob --single-transaction db_name > db_name.sql</pre> <p>另外Q如果想要实现在U备份,q可以?<code><font face="NSimsun">--master-data</font></code> 参数来实玎ͼ如下Q?/p> <pre>/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --master-data=1 \ --single-transaction --flush-logs db_name > db_name.sql</pre> <p>它只是在一开始的瞬间h锁表Q然后就hbinlog了,而后在导出的文g中加?code><font face="NSimsun">CHANGE MASTER</font></code> 语句来指定当前备份的binlog位置Q如果要把这个文件恢复到slave里去Q就可以采用q种Ҏ来做?/p> <h4>1.2 q原</h4> <p>?<code><font face="NSimsun">mysqldump</font></code> 备䆾出来的文件是一个可以直接倒入?SQL 脚本Q有两种Ҏ可以数据导入?/p> <ul type="1"> <li>直接?<code><font face="NSimsun">mysql</font></code> 客户? <p>例如Q?/p> <pre>/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql</pre> <p> </p> <li>?SOURCE 语法 <p>其实q不是标准的 SQL 语法Q而是 <code><font face="NSimsun">mysql</font></code> 客户端提供的功能Q例如:</p> <pre>SOURCE /tmp/db_name.sql;</pre> <p>q里需要指定文件的l对路径Qƈ且必L <code><font face="NSimsun">mysqld</font></code> q行用户(例如 nobody)有权限读取的文g?/p> </li> </ul> <h3>2?mysqlhotcopy</h3> <h4>2.1 备䆾</h4> <p><code><font face="NSimsun">mysqlhotcopy</font></code> 是一?PERL E序Q最初由Tim Bunce~写。它使用 <code><font face="NSimsun">LOCK TABLES、FLUSH TABLES</font></code> ?<code><font face="NSimsun">cp</font></code> ?<code><font face="NSimsun">scp</font></code> 来快速备份数据库。它是备份数据库或单个表的最快的途径Q但它只能运行在数据库文Ӟ包括数据表定义文件、数据文件、烦引文Ӟ所在的机器上?code><font face="NSimsun">mysqlhotcopy</font></code> 只能用于备䆾 <code><font face="NSimsun">MyISAM</font></code>Qƈ且只能运行在 <code><font face="NSimsun">cUnix</font></code> ?<code><font face="NSimsun">NetWare</font></code> pȝ上?/p> <p><code><font face="NSimsun">mysqlhotcopy</font></code> 支持一ơ性拷贝多个数据库Q同时还支持正则表达。以下是几个例子Q?/p> <pre>root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \ db_name /tmp (把数据库目录 <tt>db_name</tt> 拯?<tt>/tmp</tt> ? root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \ db_name_1 ... db_name_n /tmp root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=yejr -p=yejr \ db_name./regex/ /tmp</pre> <p>更详l的使用Ҏh看手册,或者调用下面的命o来查?<code><font face="NSimsun">mysqlhotcopy</font></code> 的帮助:</p> <pre>perldoc /usr/local/mysql/bin/mysqlhotcopy</pre> <p>注意Q想要?<code><font face="NSimsun">mysqlhotcopy</font></code>Q必要?<code><font face="NSimsun">SELECT、RELOAD(要执?FLUSH TABLES)</font></code> 权限Qƈ且还必须要能够有d <tt><font face="NSimsun">datadir/db_name</font></tt> 目录的权限?/p> <h4>2.2 q原</h4> <p><code><font face="NSimsun">mysqlhotcopy</font></code> 备䆾出来的是整个数据库目录,使用时可以直接拷贝到 <code><font face="NSimsun">mysqld</font></code> 指定?<tt><font face="NSimsun">datadir</font></tt> (在这里是 <tt><font face="NSimsun">/usr/local/mysql/data/</font></tt>)目录下即可,同时要注意权限的问题Q如下例Q?/p> <pre>root#cp -rf db_name /usr/local/mysql/data/ root#chown -R nobody:nobody /usr/local/mysql/data/ (?db_name 目录的属L?<code>mysqld</code> q行用户)</pre> <p> </p> <h3>3?SQL 语法备䆾</h3> <h4>3.1 备䆾</h4> <p><code><font face="NSimsun">BACKUP TABLE</font></code> 语法其实?<code><font face="NSimsun">mysqlhotcopy</font></code> 的工作原理差不多Q都是锁表,然后拯数据文g。它能实现在U备份,但是效果不理惻I因此不推荐用。它只拷贝表l构文g和数据文Ӟ不同时拷贝烦引文Ӟ因此恢复时比较慢?br /> 例子Q?/p> <pre>BACK TABLE tbl_name TO '/tmp/db_name/';</pre> <p>注意Q必要?<code><font face="NSimsun">FILE</font></code> 权限才能执行本SQLQƈ且目?<tt><font face="NSimsun">/tmp/db_name/</font></tt> 必须能被 <code><font face="NSimsun">mysqld</font></code> 用户可写Q导出的文g不能覆盖已经存在的文Ӟ以避免安全问题?/p> <p><code><font face="NSimsun">SELECT INTO OUTFILE</font></code> 则是把数据导出来成ؓ普通的文本文gQ可以自定义字段间隔的方式,方便处理q些数据?br /> 例子Q?/p> <pre>SELECT * INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name;</pre> <p>注意Q必要?<code><font face="NSimsun">FILE</font></code> 权限才能执行本SQLQƈ且文?<tt><font face="NSimsun">/tmp/db_name/tbl_name.txt</font></tt> 必须能被 <code><font face="NSimsun">mysqld</font></code> 用户可写Q导出的文g不能覆盖已经存在的文Ӟ以避免安全问题?/p> <h4>3.2 恢复</h4> <p>?<code><font face="NSimsun">BACKUP TABLE</font></code> Ҏ备䆾出来的文Ӟ可以q行 <code><font face="NSimsun">RESTORE TABLE</font></code> 语句来恢复数据表?br /> 例子Q?/p> <pre>RESTORE TABLE FROM '/tmp/db_name/';</pre> <p>权限要求cM上面所q?/p> <p>?<code><font face="NSimsun">SELECT INTO OUTFILE</font></code> Ҏ备䆾出来的文Ӟ可以q行 <code><font face="NSimsun">LOAD DATA INFILE</font></code> 语句来恢复数据表?br /> 例子Q?/p> <pre>LOAD DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE tbl_name;</pre> <p>权限要求cM上面所q。倒入数据之前Q数据表要已l存在才行。如果担心数据会发生重复Q可以增?<code><font face="NSimsun">REPLACE</font></code> 关键字来替换已有记录或者用 <code><font face="NSimsun">IGNORE</font></code> 关键字来忽略他们?/p> <h3>4?启用二进制日?binlog)</h3> <p>采用 <code><font face="NSimsun">binlog</font></code> 的方法相Ҏ说更灉|Q省心省力,而且q可以支持增量备份?/p> <p>启用 <code><font face="NSimsun">binlog</font></code> 时必要重启 <code><font face="NSimsun">mysqld</font></code>。首先,关闭 <code><font face="NSimsun">mysqld</font></code>Q打开 <code><font face="NSimsun">my.cnf</font></code>Q加入以下几行:</p> <pre>server-id = 1 log-bin = binlog log-bin-index = binlog.index</pre> <p>然后启动 <code><font face="NSimsun">mysqld</font></code> 可以了。运行过E中会?<code><font face="NSimsun">binlog.000001</font></code> 以及 <code><font face="NSimsun">binlog.index</font></code>Q前面的文g?<code><font face="NSimsun">mysqld</font></code> 记录所有对数据的更新操作,后面的文件则是所?<code><font face="NSimsun">binlog</font></code> 的烦引,都不能轻易删除。关?<code><font face="NSimsun">binlog</font></code> 的信息请查看手册?/p> <p>需要备份时Q可以先执行一?SQL 语句Q让 <code><font face="NSimsun">mysqld</font></code> l止对当?<code><font face="NSimsun">binlog</font></code> 的写入,可以把文g直接备䆾Q这L话就能达到增量备份的目的了:</p> <pre>FLUSH LOGS;</pre> <p>如果是备份复制系l中的从服务器,q应该备?<tt><font face="NSimsun">master.info</font></tt> ?<tt><font face="NSimsun">relay-log.info</font></tt> 文g?/p> <p>备䆾出来?<code><font face="NSimsun">binlog</font></code> 文g可以?MySQL 提供的工?<code><font face="NSimsun">mysqlbinlog</font></code> 来查看,如:</p> <pre>/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001</pre> <p>该工具允怽昄指定的数据库下的所?SQL 语句Qƈ且还可以限定旉范围Q相当的方便Q详l的h看手册?/p> <p>恢复Ӟ可以采用cM以下语句来做刎ͼ</p> <pre>/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 | mysql -uyejr -pyejr db_name</pre> <p>?<code><font face="NSimsun">mysqlbinlog</font></code> 输出?SQL 语句直接作ؓ输入来执行它?/p> <p>如果你有I闲的机器,不妨采用q种方式来备份。由于作?<code><font face="NSimsun">slave</font></code> 的机器性能要求相对不是那么高,因此成本低,用低成本p实现增量备䆾而且q能分担一部分数据查询压力Q何乐而不为呢Q?/p> <h3>5?直接备䆾数据文g</h3> <p>相较前几U方法,备䆾数据文g最为直接、快速、方便,~点是基本上不能实现增量备䆾。ؓ了保证数据的一致性,需要在靠背文g前,执行以下 SQL 语句Q?/p> <pre>FLUSH TABLES WITH READ LOCK;</pre> <p>也就是把内存中的数据都刷新到盘中,同时锁定数据表,以保证拷贝过E中不会有新的数据写入。这U方法备份出来的数据恢复也很单,直接拯回原来的数据库目录下卛_?/p> <p>注意Q对?<code><font face="NSimsun">Innodb</font></code> cd表来_q需要备份其日志文gQ即 <code><font face="NSimsun">ib_logfile*</font></code> 文g。因为当 <code><font face="NSimsun">Innodb</font></code> 表损坏时Q就可以依靠q些日志文g来恢复?/p> <h3>6?备䆾{略</h3> <p>对于中等U别业务量的pȝ来说Q备份策略可以这么定Q第一ơ全量备份,每天一ơ增量备份,每周再做一ơ全量备份,如此一直重复。而对于重要的且繁忙的pȝ来说Q则可能需要每天一ơ全量备份,每小时一ơ增量备份,甚至更频J。ؓ了不影响U上业务Q实现在U备份,q且能增量备份,最好的办法是采用M复制机制(<code><font face="NSimsun">replication</font></code>)Q在 <code><font face="NSimsun">slave</font></code> 机器上做备䆾?/p> <h3>7?数据l护和灾难恢?/h3> <p>作ؓ一名DBA(我目前还不是Q呵?Q最重要的工作内容之一是保证数据表能安全、稳定、高速用。因此,需要定期维护你的数据表。以?SQL 语句很有用Q?/p> <pre>CHECK TABLE ?REPAIR TABLEQ检查或l护 MyISAM ? OPTIMIZE TABLEQ优?MyISAM ? ANALYZE TABLEQ分?MyISAM ?/pre> <p>当然了,上面q些命o起始都可以通过工具 <code><font face="NSimsun">myisamchk</font></code> 来完成,在这里不作详q?/p> <p><code><font face="NSimsun">Innodb</font></code> 表则可以通过执行以下语句来整理碎片,提高索引速度Q?/p> <pre>ALTER TABLE tbl_name ENGINE = Innodb;</pre> <p>q其实是一?<code><font face="NSimsun">NULL</font></code> 操作Q表面上看什么也不做Q实际上重新整理片了?/p> <p>通常使用?<code><font face="NSimsun">MyISAM</font></code> 表可以用上面提到的恢复方法来完成。如果是索引坏了Q可以用 <code><font face="NSimsun">myisamchk</font></code> 工具来重建烦引。而对?<code><font face="NSimsun">Innodb</font></code> 表来_没q么直接了,因ؓ它把所有的表都保存在一个表I间了。不q?<code><font face="NSimsun">Innodb</font></code> 有一个检查机制叫 <code><font face="NSimsun">模糊查点</font></code>Q只要保存了日志文gQ就能根据日志文件来修复错误。可以在 <tt><font face="NSimsun">my.cnf</font></tt> 文g中,增加以下参数Q让 <code><font face="NSimsun">mysqld</font></code> 在启动时自动查日志文Ӟ</p> <pre>innodb_force_recovery = 4</pre> <p>关于该参数的信息h看手册?/p> <h3>8?ȝ</h3> <p>做好数据备䆾Q定只好合适的备䆾{略Q这是一个DBA所做事情的一部分,万事开头难Q就从现在开始吧Q?/p> <img src ="http://m.tkk7.com/void241/aggbug/216006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2008-07-19 12:21 <a href="http://m.tkk7.com/void241/archive/2008/07/19/216006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 新功?Q- 分区http://m.tkk7.com/void241/archive/2008/07/19/216003.htmlvoidvoidSat, 19 Jul 2008 04:17:00 GMThttp://m.tkk7.com/void241/archive/2008/07/19/216003.htmlhttp://m.tkk7.com/void241/comments/216003.htmlhttp://m.tkk7.com/void241/archive/2008/07/19/216003.html#Feedback0http://m.tkk7.com/void241/comments/commentRss/216003.htmlhttp://m.tkk7.com/void241/services/trackbacks/216003.html错误的按日期分区例子

最直观的方法,是直接用年月日q种日期格式来进行常规的分区Q?/p>

CODE:
  1. mysql> create table rms (d date)
  2. -> partition by range (d)
  3. -> (partition p0 values less than ('1995-01-01'),
  4. -> partition p1 VALUES LESS THAN ('2010-01-01'));

 

上面的例子中Q就是直接用"Y-m-d"的格式来对一个tableq行分区Q可惜想当然往往不能奏效Q会得到一个错误信?

ERROR 1064 (42000): VALUES value must be of same type as partition function near '),
partition p1 VALUES LESS THAN ('2010-01-01'))' at line 3

上述分区方式没有成功Q而且明显的不l济Q老练的DBA会用整型数值来q行分区Q?/p>

CODE:
  1. mysql> CREATE TABLE part_date1
  2. -> ( c1 int default NULL,
  3. -> c2 varchar(30) default NULL,
  4. -> c3 date default NULL) engine=myisam
  5. -> partition by range (cast(date_format(c3,'%Y%m%d') as signed))
  6. -> (PARTITION p0 VALUES LESS THAN (19950101),
  7. -> PARTITION p1 VALUES LESS THAN (19960101) ,
  8. -> PARTITION p2 VALUES LESS THAN (19970101) ,
  9. -> PARTITION p3 VALUES LESS THAN (19980101) ,
  10. -> PARTITION p4 VALUES LESS THAN (19990101) ,
  11. -> PARTITION p5 VALUES LESS THAN (20000101) ,
  12. -> PARTITION p6 VALUES LESS THAN (20010101) ,
  13. -> PARTITION p7 VALUES LESS THAN (20020101) ,
  14. -> PARTITION p8 VALUES LESS THAN (20030101) ,
  15. -> PARTITION p9 VALUES LESS THAN (20040101) ,
  16. -> PARTITION p10 VALUES LESS THAN (20100101),
  17. -> PARTITION p11 VALUES LESS THAN MAXVALUE );
  18. Query OK, 0 rows affected (0.01 sec)

 

搞定Q接着往下分?/p>

 

CODE:
  1. mysql> explain partitions
  2. -> select count(*) from part_date1 where
  3. -> c3> date '1995-01-01' and c3 <date '1995-12-31'\G
  4. *************************** 1. row ***************************
  5. id: 1
  6. select_type: SIMPLE
  7. table: part_date1
  8. partitions: p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11
  9. type: ALL
  10. possible_keys: NULL
  11. key: NULL
  12. key_len: NULL
  13. ref: NULL
  14. rows: 8100000
  15. Extra: Using where
  16. 1 row in set (0.00 sec)

 

万恶的mysql居然对上面的sql使用全表扫描Q而不是按照我们的日期分区分块查询。原文中解释?a >MYSQL的优化器q不认这U日期Ş式的分区Q花了大量的幅来引׃C歧\Q过分?/p>

正确的日期分Z?/h3>

mysql优化器支持以下两U内|的日期函数q行分区Q?/p>

  • TO_DAYS()
  • YEAR()

看个例子Q?/p>

CODE:
  1. mysql> CREATE TABLE part_date3
  2. -> ( c1 int default NULL,
  3. -> c2 varchar(30) default NULL,
  4. -> c3 date default NULL) engine=myisam
  5. -> partition by range (to_days(c3))
  6. -> (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')),
  7. -> PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) ,
  8. -> PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) ,
  9. -> PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) ,
  10. -> PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) ,
  11. -> PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) ,
  12. -> PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) ,
  13. -> PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) ,
  14. -> PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) ,
  15. -> PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) ,
  16. -> PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')),
  17. -> PARTITION p11 VALUES LESS THAN MAXVALUE );
  18. Query OK, 0 rows affected (0.00 sec)

 

以to_days()函数分区成功Q我们分析一下看看:

CODE:
  1. mysql> explain partitions
  2. -> select count(*) from part_date3 where
  3. -> c3> date '1995-01-01' and c3 <date '1995-12-31'\G
  4. *************************** 1. row ***************************
  5. id: 1
  6. select_type: SIMPLE
  7. table: part_date3
  8. partitions: p1
  9. type: ALL
  10. possible_keys: NULL
  11. key: NULL
  12. key_len: NULL
  13. ref: NULL
  14. rows: 808431
  15. Extra: Using where
  16. 1 row in set (0.00 sec)

 

可以看到Q?a >mysql优化器这ơ不负众望,仅仅在p1分区q行查询。在q种情况下查询,真的能够带来提升查询效率么?下面分别对这ơ徏立的part_date3和之前分区失败的part_date1做一个查询对比:

CODE:
  1. mysql> select count(*) from part_date3 where
  2. -> c3> date '1995-01-01' and c3 <date '1995-12-31';
  3. +----------+
  4. | count(*) |
  5. +----------+
  6. | 805114 |
  7. +----------+
  8. 1 row in set (4.11 sec)
  9. mysql> select count(*) from part_date1 where
  10. -> c3> date '1995-01-01' and c3 <date '1995-12-31';
  11. +----------+
  12. | count(*) |
  13. +----------+
  14. | 805114 |
  15. +----------+
  16. 1 row in set (40.33 sec)

 

可以看到Q分区正的话queryp旉?U,而分区错误则p旉40U(相当于没有分区)Q效率有90Q的提升Q所以我们千万要正确的用分区功能,分区后务必用explain验证Q这h能获得真正的性能提升?/p>

void 2008-07-19 12:17 发表评论
]]>优化MySQL数据库性能的八大“妙手?/title><link>http://m.tkk7.com/void241/archive/2008/07/19/216002.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Sat, 19 Jul 2008 04:16:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2008/07/19/216002.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/216002.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2008/07/19/216002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/216002.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/216002.html</trackback:ping><description><![CDATA[<p><strong>1、选取最适用的字D属?br /> <br /> </strong>  MySQL可以很好的支持大数据量的存取Q但是一般说来,数据库中的表小Q在它上面执行的查询也就会越快。因此,在创的时候,Z获得更好的性能Q我们可以将表中字段的宽度设得尽可能。例如,在定义邮政编码这个字D|Q如果将其设|ؓCHAR(255),昄l数据库增加了不必要的空_甚至使用VARCHARq种cd也是多余的,因ؓCHAR(6)可以很好的完成d了。同LQ如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字Dc?br /> <br />   另外一个提高效率的Ҏ是在可能的情况下Q应该尽量把字段讄为NOT NULLQ这样在来执行查询的时候,数据库不用去比较NULL倹{?br /> <br />   对于某些文本字段Q例?#8220;省䆾”或?#8220;性别”Q我们可以将它们定义为ENUMcd。因为在MySQL中,ENUMcd被当作数值型数据来处理,而数值型数据被处理v来的速度要比文本cd快得多。这P我们又可以提高数据库的性能?br /> <br />   <strong>2、用连接(JOINQ来代替子查?Sub-Queries)</strong><br /> <br />   MySQL?.1开始支持SQL的子查询。这个技术可以用SELECT语句来创Z个单列的查询l果Q然后把q个l果作ؓqo条g用在另一个查询中。例如,我们要将客户基本信息表中没有M订单的客户删除掉Q就可以利用子查询先从销售信息表中将所有发单的客户ID取出来,然后结果传递给L询,如下所C:</p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">DELETE FROM customerinfo<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )</span></div> </div> <p>使用子查询可以一ơ性的完成很多逻辑上需要多个步骤才能完成的SQL操作Q同时也可以避免事务或者表锁死Qƈ且写h也很Ҏ。但是,有些情况下,子查询可以被更有效率的连接(JOINQ?. 替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:</p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM customerinfo<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )</span></div> </div> <p>如果使用q接QJOINQ?. 来完成这个查询工作,速度会快很多。尤其是当salesinfo表中对CustomerID建有索引的话Q性能会更好Q查询如下:</p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM customerinfo <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />LEFT JOIN salesinfoON customerinfo.CustomerID</span><span style="color: #000000">=</span><span style="color: #000000">salesinfo. <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />CustomerID <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE salesinfo.CustomerID IS NULL  <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div> </div> <p>q接QJOINQ?. 之所以更有效率一些,是因?MySQL不需要在内存中创Z时表来完成这个逻辑上的需要两个步骤的查询工作?br /> <br /> <strong>3、用联?UNION)来代替手动创建的临时?br /> <br /> </strong>  MySQL ?4.0 的版本开始支?UNION 查询Q它可以把需要用时表的两条或更多?SELECT 查询合ƈ的一个查询中。在客户端的查询会话l束的时候,临时表会被自动删除,从而保证数据库整齐、高效。?UNION 来创建查询的时候,我们只需要用 UNION作ؓ关键字把多个 SELECT 语句q接h可以了Q要注意的是所?SELECT 语句中的字段数目要想同。下面的例子演CZ一个?UNION的查询?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT Name, Phone FROM client<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />UNION<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SELECT Name, BirthDate FROM author<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />UNION<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SELECT Name, Supplier FROM product</span></div> </div> <p> <strong>4、事?/strong><br /> <br />   管我们可以使用子查询(Sub-QueriesQ、连接(JOINQ和联合QUNIONQ来创徏各种各样的查询,但不是所有的数据库操作都可以只用一条或数几条SQL语句可以完成的。更多的时候是需要用Cpd的语句来完成某种工作。但是在q种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作׃变得不确定v来。设想一下,要把某个数据同时插入两个相关联的表中Q可能会出现q样的情况:W一个表中成功更新后Q数据库H然出现意外状况Q造成W二个表中的操作没有完成Q这P׃造成数据的不完整Q甚至会破坏数据库中的数据。要避免q种情况Q就应该使用事务Q它的作用是Q要么语句块中每条语句都操作成功Q要么都p|。换句话_是可以保持数据库中数据的一致性和完整性。事物以BEGIN 关键字开始,COMMIT关键字结束。在q之间的一条SQL操作p|Q那么,ROLLBACK命o可以把数据库恢复到BEGIN开始之前的状态?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">BEGIN;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />INSERT INTO salesinfo SET CustomerID</span><span style="color: #000000">=</span><span style="color: #000000">14</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />UPDATE inventory SET Quantity</span><span style="color: #000000">=</span><span style="color: #000000">11</span><span style="color: #000000"><br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE item</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">book</span><span style="color: #000000">'</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />COMMIT;</span></div> </div> <p> 事务的另一个重要作用是当多个用户同时用相同的数据源时Q它可以利用锁定数据库的Ҏ来ؓ用户提供一U安全的讉K方式Q这样可以保证用L操作不被其它的用hq扰?br /> <br /> <strong>5、锁定表<br /> <br /> </strong>  管事务是维护数据库完整性的一个非常好的方法,但却因ؓ它的独占性,有时会媄响数据库的性能Q尤其是在很大的应用pȝ中。由于在事务执行的过E中Q数据库会被锁定,因此其它的用戯求只能暂时等待直到该事务l束。如果一个数据库pȝ只有数几个用户<br /> 来用,事务造成的媄响不会成Z个太大的问题Q但假设有成千上万的用户同时讉K一个数据库pȝQ例如访问一个电子商务网站,׃产生比较严重的响应gq?br /> <br />   其实Q有些情况下我们可以通过锁定表的Ҏ来获得更好的性能。下面的例子q锁定表的Ҏ来完成前面一个例子中事务的功能?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">LOCK TABLE inventory WRITE<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SELECT Quantity FROM inventory<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHEREItem</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">book</span><span style="color: #000000">'</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />...<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />UPDATE inventory SET Quantity</span><span style="color: #000000">=</span><span style="color: #000000">11</span><span style="color: #000000"><br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHEREItem</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">book</span><span style="color: #000000">'</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />UNLOCK TABLES</span></div> </div> <p>q里Q我们用一?SELECT 语句取出初始数据Q通过一些计,?UPDATE 语句新值更新到表中。包含有 WRITE 关键字的 LOCK TABLE 语句可以保证?UNLOCK TABLES 命o被执行之前,不会有其它的讉K来对 inventory q行插入、更新或者删除的操作?br /> <br />   6、用外?br /> <br />   锁定表的Ҏ可以l护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。例如,外键可以保证每一条销售记录都指向某一个存在的客户。在q里Q外键可以把customerinfo 表中的CustomerID映射到salesinfo表中CustomerIDQQ何一条没有合法CustomerID的记录都不会被更新或插入到salesinfo中?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">CREATE TABLE customerinfo<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />(<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />CustomerID INT NOT NULL ,<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />PRIMARY KEY ( CustomerID )<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />) TYPE </span><span style="color: #000000">=</span><span style="color: #000000"> INNODB;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />CREATE TABLE salesinfo<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />(<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SalesID INT NOT NULL,<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />CustomerID INT NOT NULL,<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />PRIMARY KEY(CustomerID, SalesID),<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />FOREIGN KEY (CustomerID) REFERENCES customerinfo<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />(CustomerID) ON DELETECASCADE<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />) TYPE </span><span style="color: #000000">=</span><span style="color: #000000"> INNODB;</span></div> </div> <p>注意例子中的参数“ON DELETE CASCADE”。该参数保证?customerinfo 表中的一条客戯录被删除的时候,salesinfo 表中所有与该客L关的记录也会被自动删除。如果要?MySQL 中用外键,一定要C在创的时候将表的cd定义Z务安全表 InnoDBcd。该cd不是 MySQL 表的默认cd。定义的Ҏ是在 CREATE TABLE 语句中加?TYPE=INNODB。如例中所C?br /> <br />   <strong>7、用烦?/strong><br /> <br />   索引是提高数据库性能的常用方法,它可以o数据库服务器以比没有索引快得多的速度索特定的行,其是在查询语句当中包含有MAX(), MIN()和ORDERBYq些命o的时候,性能提高更ؓ明显。那该对哪些字段建立索引呢?一般说来,索引应徏立在那些用于JOIN, WHERE判断和ORDER BY排序的字D上。尽量不要对数据库中某个含有大量重复的值的字段建立索引。对于一个ENUMcd的字D|_出现大量重复值是很有可能的情况,例如customerinfo中的“province”.. 字段Q在q样的字D上建立索引不会有什么帮助;相反Q还有可能降低数据库的性能。我们在创徏表的时候可以同时创建合适的索引Q也可以使用ALTER TABLE或CREATE INDEX在以后创建烦引。此外,MySQL<br /> 从版?.23.23开始支持全文烦引和搜烦。全文烦引在MySQL 中是一个FULLTEXTcd索引Q但仅能用于MyISAM cd的表。对于一个大的数据库Q将数据装蝲C个没有FULLTEXT索引的表中,然后再用ALTER TABLE或CREATE INDEX创徏索引Q将是非常快的。但如果数据装载到一个已l有FULLTEXT索引的表中,执行q程会非常慢?br /> <br />   <strong>8、优化的查询语句</strong><br /> <br />   l大多数情况下,使用索引可以提高查询的速度Q但如果SQL语句使用不恰当的话,索引无法发挥它应有的作用。下面是应该注意的几个方面。首先,最好是在相同类型的字段间进行比较的操作。在MySQL 3.23版之前,q甚x一个必ȝ条g。例如不能将一个徏有烦引的INT字段和BIGINT字段q行比较Q但是作为特D的情况Q在CHARcd的字D和VARCHARcd字段的字D大相同的时候,可以它们进行比较。其ơ,在徏有烦引的字段上尽量不要用函数进行操作?br /> <br />   例如Q在一个DATEcd的字D上使用YEAE()函数Ӟ会使烦引不能发挥应有的作用。所以,下面的两个查询虽然返回的l果一P但后者要比前者快得多?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM order WHERE YEAR(OrderDate)</span><span style="color: #000000"><</span><span style="color: #000000">2001</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM order WHERE OrderDate</span><span style="color: #000000"><</span><span style="color: #000000">"</span><span style="color: #000000">2001-01-01</span><span style="color: #000000">"</span><span style="color: #000000">;</span></div> </div> <p>同样的情形也会发生在Ҏ值型字段q行计算的时候:</p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM inventory WHERE Amount</span><span style="color: #000000">/</span><span style="color: #000000">7</span><span style="color: #000000"><</span><span style="color: #000000">24</span><span style="color: #000000">;<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM inventory WHERE Amount</span><span style="color: #000000"><</span><span style="color: #000000">24</span><span style="color: #000000">*</span><span style="color: #000000">7</span><span style="color: #000000">; <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div> </div> <p>上面的两个查询也是返回相同的l果Q但后面的查询将比前面的一个快很多。第三,在搜索字W型字段Ӟ我们有时会?LIKE 关键字和通配W,q种做法虽然单,但却也是以牺牲系l性能ZL。例如下面的查询会比较表中的每一条记录?/p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM books<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE name like </span><span style="color: #000000">"</span><span style="color: #000000">MySQL%</span><span style="color: #000000">"</span></div> </div> <p>但是如果换用下面的查询,q回的结果一P但速度p快上很多Q?.</p> <div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid"> <div><img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">SELECT </span><span style="color: #000000">*</span><span style="color: #000000"> FROM books<br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" />WHERE name</span><span style="color: #000000">>=</span><span style="color: #000000">"</span><span style="color: #000000">MySQL</span><span style="color: #000000">"</span><span style="color: #000000">and name</span><span style="color: #000000"><</span><span style="color: #000000">"</span><span style="color: #000000">MySQM</span><span style="color: #000000">"</span><span style="color: #000000"> <br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" alt="" /></span></div> </div> <p>最后,应该注意避免在查询中让MySQLq行自动cd转换Q因{换过E也会索引变得不v作用?/p> <img src ="http://m.tkk7.com/void241/aggbug/216002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2008-07-19 12:16 <a href="http://m.tkk7.com/void241/archive/2008/07/19/216002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL my.ini?000人在UK|?/title><link>http://m.tkk7.com/void241/archive/2008/07/19/215991.html</link><dc:creator>void</dc:creator><author>void</author><pubDate>Sat, 19 Jul 2008 04:05:00 GMT</pubDate><guid>http://m.tkk7.com/void241/archive/2008/07/19/215991.html</guid><wfw:comment>http://m.tkk7.com/void241/comments/215991.html</wfw:comment><comments>http://m.tkk7.com/void241/archive/2008/07/19/215991.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/void241/comments/commentRss/215991.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/void241/services/trackbacks/215991.html</trackback:ping><description><![CDATA[MYSQL my.ini?000人在UK|?<br /> #This File was made using the WinMySQLAdmin 1.4 Tool <br /> #2004-2-23 16:28:14 <br /> #Uncomment or Add only the keys that you know how works. <br /> #Read the MySQL Manual for instructions <br /> [mysqld] <br /> basedir=D:/mysql <br /> #bind-address=210.5.*.* <br /> datadir=D:/mysql/data <br /> #language=D:/mysql/share/your language directory <br /> #slow query log#= <br /> #tmpdir#= <br /> #port=3306 <br /> set-variable = max_connections=1500 <br /> skip-locking <br /> #skip-networking <br /> set-variable = key_buffer=384M <br /> set-variable = max_allowed_packet=1M <br /> set-variable = table_cache=512 <br /> set-variable = sort_buffer=2M <br /> set-variable = record_buffer=2M <br /> set-variable = thread_cache=8 <br /> # Try number of CPU's*2 for thread_concurrency <br /> set-variable = thread_concurrency=8 <br /> set-variable = myisam_sort_buffer_size=64M <br /> #set-variable = connect_timeout=5 <br /> #set-variable = wait_timeout=5 <br /> server-id = 1 <br /> [isamchk] <br /> set-variable = key_buffer=128M <br /> set-variable = sort_buffer=128M <br /> set-variable = read_buffer=2M <br /> set-variable = write_buffer=2M <br /> [myisamchk] <br /> set-variable = key_buffer=128M <br /> set-variable = sort_buffer=128M <br /> set-variable = read_buffer=2M <br /> set-variable = write_buffer=2M <br /> [WinMySQLadmin] <br /> Server=D:/mysql/bin/mysqld-nt.exe<br /> <img src ="http://m.tkk7.com/void241/aggbug/215991.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/void241/" target="_blank">void</a> 2008-07-19 12:05 <a href="http://m.tkk7.com/void241/archive/2008/07/19/215991.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://323c.com" target="_blank">ҹƬѹۿ</a>| <a href="http://kaixininvestment.com" target="_blank">av뾫ƷϼӰ </a>| <a href="http://hivzx.com" target="_blank">ղһ</a>| <a href="http://74rr.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://peipeixiu.com" target="_blank">ŮڰǿͼƬ</a>| <a href="http://livejimmy.com" target="_blank">Ӱ</a>| <a href="http://www-ttyx.com" target="_blank">˳վ</a>| <a href="http://tzfzs.com" target="_blank">ѳ˻ɫƬ</a>| <a href="http://343dd.com" target="_blank">91Ʒѹۿ</a>| <a href="http://schygfz.com" target="_blank">վ</a>| <a href="http://milbolg.com" target="_blank">һëƬ**Ѳ</a>| <a href="http://557265.com" target="_blank">ҹƷƬѹۿ</a>| <a href="http://yijiazhiwei.com" target="_blank">˳վ߹ۿ</a>| <a href="http://hwafarda.com" target="_blank">Ʒ޹</a>| <a href="http://dstbxg.com" target="_blank">ձѹۿ</a>| <a href="http://wenfaka.com" target="_blank">޾ƷƵ</a>| <a href="http://thinkchating.com" target="_blank">һۿ</a>| <a href="http://99880524.com" target="_blank">޹Ʒ13p</a>| <a href="http://5138k.com" target="_blank">jizzjizz</a>| <a href="http://www-75044.com" target="_blank">߲</a>| <a href="http://kanboy.com" target="_blank">պa߹ۿѹۿ</a>| <a href="http://4438xa48.com" target="_blank">Ұ߹ۿ3</a>| <a href="http://zzmm88.com" target="_blank">18ɽƵվ</a>| <a href="http://whspmd.com" target="_blank">ëƬƬѹۿ</a>| <a href="http://chuadang.com" target="_blank">þø߳һëƬ</a>| <a href="http://tpwelert.com" target="_blank">һ</a>| <a href="http://jundaflex.com" target="_blank">Ƭѹۿþ</a>| <a href="http://bjlfggcm.com" target="_blank">ƷƵ</a>| <a href="http://vvww-3499.com" target="_blank">͵޾Ʒ͵һ</a>| <a href="http://taobaohuopin.com" target="_blank">޸ŮBBW</a>| <a href="http://655060.com" target="_blank">޵һ</a>| <a href="http://ksp33.com" target="_blank">ĻAVJI</a>| <a href="http://aa7852.com" target="_blank">avttֻ</a>| <a href="http://avdaka.com" target="_blank">޹ƷۺϾþþ </a>| <a href="http://www998xe.com" target="_blank">ާѡþþþƷ9966</a>| <a href="http://tv787.com" target="_blank">߿һ</a>| <a href="http://amgzh.com" target="_blank">޾ƷĻ鶹</a>| <a href="http://meyume.com" target="_blank">ƷƬva</a>| <a href="http://www-554949.com" target="_blank">Ļ </a>| <a href="http://7a37.com" target="_blank">ձaƬѿ</a>| <a href="http://qestest.com" target="_blank">Ʒѿþþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>