﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-lqxue-随笔分类-database</title><link>http://www.blogjava.net/lqxue/category/23954.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 23 May 2008 07:38:55 GMT</lastBuildDate><pubDate>Fri, 23 May 2008 07:38:55 GMT</pubDate><ttl>60</ttl><item><title>[收藏]MySQLInnoDB存储引擎的事务隔离级别</title><link>http://www.blogjava.net/lqxue/archive/2008/05/23/202404.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 23 May 2008 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/05/23/202404.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/202404.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/05/23/202404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/202404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/202404.html</trackback:ping><description><![CDATA[<span class="n666">我们知道，在关系数据库标准中有四个事务隔离级别：
<p>&nbsp;</p>
<p>未提交读(Read&nbsp;Uncommitted)：允许脏读，也就是可能读取到其他会话中未提交事务修改的数据&nbsp;<br />
提交读(Read&nbsp;Committed)：只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别&nbsp;<br />
可重复读(Repeated&nbsp;Read)：可重复读。在同一个事务内的查询都是事务开始时刻一致的，InnoDB默认级别。在SQL标准中，该隔离级别消除了不可重复读，但是还存在幻象读&nbsp;<br />
串行读(Serializable)：完全串行化的读，每次读都需要获得表级共享锁，读写相互都会阻塞<br />
查看InnoDB系统级别的事务隔离级别：</p>
<p>mysql&gt;&nbsp;SELECT&nbsp;@@global.tx_isolation;<br />
+-----------------------+<br />
&#124;&nbsp;@@global.tx_isolation&nbsp;&#124;<br />
+-----------------------+<br />
&#124;&nbsp;REPEATABLE-READ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br />
+-----------------------+<br />
1&nbsp;row&nbsp;in&nbsp;set&nbsp;(0.00&nbsp;sec)<br />
查看InnoDB会话级别的事务隔离级别：</p>
<p>mysql&gt;&nbsp;SELECT&nbsp;@@tx_isolation;<br />
+-----------------+<br />
&#124;&nbsp;@@tx_isolation&nbsp;&nbsp;&#124;<br />
+-----------------+<br />
&#124;&nbsp;REPEATABLE-READ&nbsp;&#124;<br />
+-----------------+<br />
1&nbsp;row&nbsp;in&nbsp;set&nbsp;(0.00&nbsp;sec)<br />
修改事务隔离级别：</p>
<p>mysql&gt;&nbsp;set&nbsp;global&nbsp;transaction&nbsp;isolation&nbsp;level&nbsp;read&nbsp;committed;<br />
Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)</p>
<p>mysql&gt;&nbsp;set&nbsp;session&nbsp;transaction&nbsp;isolation&nbsp;level&nbsp;read&nbsp;committed;<br />
Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)</p>
<p>InnoDB的可重复读隔离级别和其他数据库的可重复读是有区别的，不会造成幻象读（phantom&nbsp;read），所谓幻象读，就是同一个事务内，多次select，可以读取到其他session&nbsp;insert并已经commit的数据。下面是一个小的测试，证明InnoDB的可重复读隔离级别不会造成幻象读。测试涉及两个session，分别为session&nbsp;1和session&nbsp;2，隔离级别都是repeateable&nbsp;read，关闭autocommit</p>
<p>mysql&gt;&nbsp;select&nbsp;@@tx_isolation;<br />
+-----------------+<br />
&#124;&nbsp;@@tx_isolation&nbsp;&nbsp;&#124;<br />
+-----------------+<br />
&#124;&nbsp;REPEATABLE-READ&nbsp;&#124;<br />
+-----------------+<br />
1&nbsp;row&nbsp;in&nbsp;set&nbsp;(0.00&nbsp;sec)</p>
<p>mysql&gt;&nbsp;set&nbsp;autocommit=off;<br />
Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)<br />
session&nbsp;1&nbsp;创建表并插入测试数据</p>
<p>mysql&gt;&nbsp;create&nbsp;table&nbsp;test(i&nbsp;int)&nbsp;engine=innodb;<br />
Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)</p>
<p>mysql&gt;&nbsp;insert&nbsp;into&nbsp;test&nbsp;values(1);<br />
Query&nbsp;OK,&nbsp;1&nbsp;row&nbsp;affected&nbsp;(0.00&nbsp;sec)<br />
session&nbsp;2&nbsp;查询，没有数据，正常，session1没有提交，不允许脏读</p>
<p>mysql&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;test;<br />
Empty&nbsp;set&nbsp;(0.00&nbsp;sec)<br />
session&nbsp;1&nbsp;提交事务</p>
<p>mysql&gt;&nbsp;commit;<br />
Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)<br />
session&nbsp;2&nbsp;查询，还是没有数据，没有产生幻象读</p>
<p>mysql&gt;&nbsp;select&nbsp;*&nbsp;from&nbsp;test;<br />
Empty&nbsp;set&nbsp;(0.00&nbsp;sec)<br />
以上试验版本：</p>
<p>mysql&gt;&nbsp;select&nbsp;version();<br />
+-------------------------+<br />
&#124;&nbsp;version()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;<br />
+-------------------------+<br />
&#124;&nbsp;5.0.37-community-nt-log&nbsp;&#124;<br />
+-------------------------+<br />
1&nbsp;row&nbsp;in&nbsp;set&nbsp;(0.00&nbsp;sec)<br />
--EOF--<br />
</span><br />
</p>
<br />
<br />
From:http://bbs.itren.cn/html/bbs41739.html
<img src ="http://www.blogjava.net/lqxue/aggbug/202404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-05-23 14:39 <a href="http://www.blogjava.net/lqxue/archive/2008/05/23/202404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]sql 语句的执行过程</title><link>http://www.blogjava.net/lqxue/archive/2008/05/17/201112.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Sat, 17 May 2008 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/05/17/201112.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/201112.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/05/17/201112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/201112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/201112.html</trackback:ping><description><![CDATA[<p><strong>第1章 SQL语句处理的过程</strong>　　在调整之前我们需要了解一些背景知识，只有知道这些背景知识，我们才能更好的去调整sql语句。<br />
本节介绍了SQL语句处理的基本过程，主要包括：<br />
　　&#183; 查询语句处理 <br />
　　&#183; DML语句处理(insert, update, delete) <br />
　　&#183; DDL 语句处理(create .. , drop .. , alter .. , ) <br />
　　&#183; 事务控制(commit, rollback) <br />
<br />
<strong>　　SQL 语句的执行过程(SQL Statement Execution)</strong><br />
<br />
　　 图3-1 概要的列出了处理和运行一个sql语句的需要各个重要阶段。在某些情况下，Oracle运行sql的过程可能与下面列出的各个阶段的顺序有所不同。如DEFINE阶段可能在FETCH阶段之前，这主要依赖你如何书写代码。<br />
<br />
　　对许多oracle的工具来说，其中某些阶段会自动执行。绝大多数用户不需要关心各个阶段的细节问题，然而，知道执行的各个阶段还是有必要的，这会帮助你写出更高效的SQL语句来，而且还可以让你猜测出性能差的SQL语句主要是由于哪一个阶段造成的，然后我们针对这个具体的阶段，找出解决的办法。<br />
<br />
　　图 3-1 SQL语句处理的各个阶段<br />
<br />
<strong>　　DML语句的处理</strong><br />
<br />
　　本节给出一个例子来说明在DML语句处理的各个阶段到底发生了什么事情。假设你使用Pro*C程序来为指定部门的所有职员增加工资。程序已经连到正确的用户，你可以在你的程序中嵌入如下的SQL语句：<br />
EXEC SQL UPDATE employees <br />
SET salary = 1.10 * salary WHERE department_id = :var_department_id; var_department_id是程序变量，里面包含部门号，我们要修改该部门的职员的工资。当这个SQL语句执行时，使用该变量的值。<br />
<br />
　　每种类型的语句都需要如下阶段：<br />
　　&#183; 第1步: Create a Cursor 创建游标<br />
　　&#183; 第2步: Parse the Statement 分析语句<br />
　　&#183; 第5步: Bind Any Variables 绑定变量<br />
　　&#183; 第7步: Run the Statement 运行语句<br />
　　&#183; 第9步: Close the Cursor 关闭游标<br />
<br />
　　如果使用了并行功能，还会包含下面这个阶段：<br />
　　&#183; 第6步: Parallelize the Statement 并行执行语句<br />
<br />
　　如果是查询语句，则需要以下几个额外的步骤，如图 3所示：<br />
　　&#183; 第3步: Describe Results of a Query 描述查询的结果集<br />
　　&#183; 第4步: Define Output of a Query 定义查询的输出数据<br />
　　&#183; 第8步: Fetch Rows of a Query 取查询出来的行<br />
<br />
　　下面具体说一下每一步中都发生了什么事情：.<br />
<strong><br />
　　第1步: 创建游标(Create a Cursor)</strong><br />
<br />
由程序接口调用创建一个游标（cursor）。任何SQL语句都会创建它，特别在运行DML语句时，都是自动创建游标的，不需要开发人员干预。多数应用中，游标的创建是自动的。然而，在预编译程序(pro*c)中游标的创建，可能是隐含的，也可能显式的创建。在存储过程中也是这样的。<br />
<br />
<strong>　　第2步:分析语句(Parse the Statement)</strong><br />
<br />
　　在语法分析期间，SQL语句从用户进程传送到Oracle，SQL语句经语法分析后，SQL语句本身与分析的信息都被装入到共享SQL区。在该阶段中，可以解决许多类型的错误。<br />
<br />
　　语法分析分别执行下列操作：<br />
l 翻译SQL语句，验证它是合法的语句，即书写正确<br />
l 实现数据字典的查找，以验证是否符合表和列的定义<br />
l 在所要求的对象上获取语法分析锁，使得在语句的语法分析过程中不改变这些对象的定义<br />
l 验证为存取所涉及的模式对象所需的权限是否满足<br />
l 决定此语句最佳的执行计划<br />
l 将它装入共享SQL区<br />
l 对分布的语句来说，把语句的全部或部分路由到包含所涉及数据的远程节点<br />
<br />
　　以上任何一步出现错误，都将导致语句报错，中止执行。<br />
<br />
　　只有在共享池中不存在等价SQL语句的情况下，才对SQL语句作语法分析。在这种情况下，数据库内核重新为该语句分配新的共享SQL区，并对语句进行语法分析。进行语法分析需要耗费较多的资源，所以要尽量避免进行语法分析，这是优化的技巧之一。<br />
<br />
　　语法分析阶段包含了不管此语句将执行多少次，而只需分析一次的处理要求。Oracle只对每个SQL语句翻译一次，在以后再次执行该语句时，只要该语句还在共享SQL区中，就可以避免对该语句重新进行语法分析，也就是此时可以直接使用其对应的执行计划对数据进行存取。这主要是通过绑定变量(bind variable)实现的，也就是我们常说的共享SQL，后面会给出共享SQL的概念。<br />
<br />
　　虽然语法分析验证了SQL语句的正确性，但语法分析只能识别在SQL语句执行之前所能发现的错误(如书写错误、权限不足等)。因此，有些错误通过语法分析是抓不到的。例如，在数据转换中的错误或在数据中的错（如企图在主键中插入重复的值）以及死锁等均是只有在语句执行阶段期间才能遇到和报告的错误或情况。<br />
<br />
<strong>　　查询语句的处理</strong><br />
<br />
　　查询与其它类型的SQL语句不同，因为在成功执行后作为结果将返回数据。其它语句只是简单地返回成功或失败，而查询则能返回一行或许多行数据。查询的结果均采用表格形式，结果行被一次一行或者批量地被检索出来。从这里我们可以得知批量的fetch数据可以降低网络开销，所以批量的fetch也是优化的技巧之一。<br />
<br />
有些问题只与查询处理相关，查询不仅仅指SELECT语句，同样也包括在其它SQL语句中的隐含查询。例如，下面的每个语句都需要把查询作为它执行的一部分：<br />
INSERT INTO table SELECT... <br />
UPDATE table SET x = y WHERE... <br />
DELETE FROM table WHERE... <br />
CREATE table AS SELECT... <br />
<br />
　　具体来说，查询<br />
&#183; 要求读一致性<br />
&#183; 可能使用回滚段作中间处理<br />
&#183; 可能要求SQL语句处理描述、定义和取数据阶段<br />
<br />
<strong>　　第3步: 描述查询结果(Describe Results of a Query)</strong><br />
<br />
　　描述阶段只有在查询结果的各个列是未知时才需要；例如，当查询由用户交互地输入需要输出的列名。在这种情况要用描述阶段来决定查询结果的特征（数据类型，长度和名字）。<br />
<br />
<strong>　　第4步: 定义查询的输出数据(Define Output of a Query) </strong><br />
<br />
　　在查询的定义阶段，你指定与查询出的列值对应的接收变量的位置、大小和数据类型，这样我们通过接收变量就可以得到查询结果。如果必要的话，Oracle会自动实现数据类型的转换。这是将接收变量的类型与对应的列类型相比较决定的。<br />
<br />
<strong>　　第5步: 绑定变量(Bind Any Variables)</strong><br />
<br />
　　此时，Oracle知道了SQL语句的意思，但仍没有足够的信息用于执行该语句。Oracle 需要得到在语句中列出的所有变量的值。在该例中，Oracle需要得到对department_id列进行限定的值。得到这个值的过程就叫绑定变量(binding variables)<br />
<br />
　　此过程称之为将变量值捆绑进来。程序必须指出可以找到该数值的变量名（该变量被称为捆绑变量，变量名实质上是一个内存地址，相当于指针）。应用的最终用户可能并没有发觉他们正在指定捆绑变量，因为Oracle 的程序可能只是简单地指示他们输入新的值，其实这一切都在程序中自动做了。因为你指定了变量名，在你再次执行之前无须重新捆绑变量。你可以改变绑定变量的值，而Oracle在每次执行时，仅仅使用内存地址来查找此值。如果Oracle 需要实现自动数据类型转换的话（除非它们是隐含的或缺省的），你还必须对每个值指定数据类型和长度。关于这些信息可以参考oracle的相关文档，如Oracle Call Interface Programmer's Guide<br />
<br />
<strong>　　第6步: 并行执行语句(Parallelize the Statement )</strong><br />
<br />
　　ORACLE 可以在SELECTs, INSERTs, UPDATEs, MERGEs, DELETEs语句中执行相应并行查询操作，对于某些DDL操作，如创建索引、用子查询创建表、在分区表上的操作，也可以执行并行操作。并行化可以导致多个服务器进程(oracle server processes)为同一个SQL语句工作，使该SQL语句可以快速完成，但是会耗费更多的资源，所以除非很有必要，否则不要使用并行查询。<br />
<br />
<strong>　　第7步: 执行语句(Run the Statement)</strong><br />
<br />
　　到了现在这个时候，Oracle拥有所有需要的信息与资源，因此可以真正运行SQL语句了。如果该语句为SELECT查询或INSERT语句，则不需要锁定任何行，因为没有数据需要被改变。然而，如果语句为UPDATE或DELETE语句，则该语句影响的所有行都被锁定，防止该用户提交或回滚之前，别的用户对这些数据进行修改。这保证了数据的一致性。对于某些语句，你可以指定执行的次数，这称为批处理(array processing)。指定执行N次，则绑定变量与定义变量被定义为大小为N的数组的开始位置，这种方法可以减少网络开销，也是优化的技巧之一。<br />
<br />
<strong>　　第8步: 取出查询的行(Fetch Rows of a Query)</strong><br />
<br />
　　在fetch阶段，行数据被取出来，每个后续的存取操作检索结果集中的下一行数据，直到最后一行被取出来。上面提到过，批量的fetch是优化的技巧之一。<br />
<br />
<strong>　　第9步: 关闭游标(Close the Cursor)</strong><br />
<br />
　　SQL语句处理的最后一个阶段就是关闭游标<br />
<br />
<strong>　　DDL语句的处理(DDL Statement Processing)</strong><br />
<br />
　　DDL语句的执行不同与DML语句和查询语句的执行，这是因为DDL语句执行成功后需要对数据字典数据进行修改。对于DDL语句，语句的分析阶段实际上包括分析、查找数据字典信息和执行。事务管理语句、会话管理语句、系统管理语句只有分析与执行阶段，为了重新执行该语句，会重新分析与执行该语句。<br />
<br />
<strong>　　事务控制(Control of Transactions)</strong><br />
<br />
　　一般来说，只有使用ORACLE编程接口的应用设计人员才关心操作的类型，并把相关的操作组织在一起，形成一个事务。一般来说，我门必须定义事务，这样在一个逻辑单元中的所有工作可以同时被提交或回滚，保证了数据的一致性。一个事务应该由逻辑单元中的所有必须部分组成，不应该多一个，也不应该少一个。<br />
　　&#183; 在事务开始和结束的这段时间内，所有被引用表中的数据都应该在一致的状态(或可以被回溯到一致的状态)<br />
　　&#183; 事务应该只包含可以对数据进行一致更改(one consistent change to the data)的SQL语句<br />
<br />
　　例如，在两个帐号之间的转帐(这是一个事务或逻辑工作单元)，应该包含从一个帐号中借钱(由一个SQL完成)，然后将借的钱存入另一个帐号(由另一个SQL完成)。这2个操作作为一个逻辑单元，应该同时成功或同时失败。其它不相关的操作，如向一个帐户中存钱，不应该包含在这个转帐事务中。<br />
<br />
　　在设计应用时，除了需要决定哪种类型的操作组成一个事务外，还需要决定使用BEGIN_DISCRETE_TRANSACTIO存储过程是否对提高小的、非分布式的事务的性能有作用。</p>
<br />
<br />
[源自]http://blog.chinaunix.net/u2/61723/showart_482625.html
<img src ="http://www.blogjava.net/lqxue/aggbug/201112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-05-17 16:56 <a href="http://www.blogjava.net/lqxue/archive/2008/05/17/201112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL最大连接数设置</title><link>http://www.blogjava.net/lqxue/archive/2008/04/21/194651.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 21 Apr 2008 15:42:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/04/21/194651.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/194651.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/04/21/194651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/194651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/194651.html</trackback:ping><description><![CDATA[MySQL的最大连接数默认是100<br />
<br />
客户端登录：mysql -uusername -ppassword<br />
<br />
设置新的最大连接数为200：mysql&gt; set GLOBAL max_connections=200<br />
<br />
显示当前运行的Query：mysql&gt; show processlist<br />
<br />
显示当前状态：mysql&gt; show status<br />
<br />
退出客户端：mysql&gt; exit<br />
<br />
查看当前最大连接数：mysqladmin -uusername -ppassword variables |find "max_con"
<img src ="http://www.blogjava.net/lqxue/aggbug/194651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-04-21 23:42 <a href="http://www.blogjava.net/lqxue/archive/2008/04/21/194651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Spring中使用JTA事务管理</title><link>http://www.blogjava.net/lqxue/archive/2008/04/21/194517.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 21 Apr 2008 07:09:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2008/04/21/194517.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/194517.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2008/04/21/194517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/194517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/194517.html</trackback:ping><description><![CDATA[http://java.e800.com.cn/articles/2007/417/1176746498587392322_1.html<br />
<br />
http://www.oracle.com/technology/tech/java/spring/how-to-jta-spring.html<br />
<img src ="http://www.blogjava.net/lqxue/aggbug/194517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2008-04-21 15:09 <a href="http://www.blogjava.net/lqxue/archive/2008/04/21/194517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查看mysql 表结构的一些sql</title><link>http://www.blogjava.net/lqxue/archive/2007/12/17/168278.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 17 Dec 2007 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/12/17/168278.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/168278.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/12/17/168278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/168278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/168278.html</trackback:ping><description><![CDATA[/*this can see the table information*/<br />
show table status from `fortioa`;<br />
<br />
/*this can see all the fields detail information of a table including&nbsp; the character set*/<br />
show full fields from `account`<br />
<br />
<br />
/*change the table column`s character set to utf8*/<br />
ALTER TABLE `purchaserequest` CHANGE `justification` `justification` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL <br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/lqxue/aggbug/168278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-12-17 17:30 <a href="http://www.blogjava.net/lqxue/archive/2007/12/17/168278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更改sql server表所有者</title><link>http://www.blogjava.net/lqxue/archive/2007/12/07/166044.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 07 Dec 2007 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/12/07/166044.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/166044.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/12/07/166044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/166044.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/166044.html</trackback:ping><description><![CDATA[--执行这个语句,就可以把当前库的所有表的所有者改为dbo<br />
exec&nbsp;&nbsp; sp_msforeachtable&nbsp;&nbsp; 'sp_changeobjectowner&nbsp;&nbsp; ''?'',&nbsp;&nbsp; ''dbo'''
<img src ="http://www.blogjava.net/lqxue/aggbug/166044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-12-07 15:11 <a href="http://www.blogjava.net/lqxue/archive/2007/12/07/166044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样同时启动多个mysql?</title><link>http://www.blogjava.net/lqxue/archive/2007/10/21/154678.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Sun, 21 Oct 2007 05:05:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/10/21/154678.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/154678.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/10/21/154678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/154678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/154678.html</trackback:ping><description><![CDATA[启动mysql<br />
nohup ./mysqld --basedir=/home/cvsadmin/mysql --datadir=/home/cvsadmin/mysql/data --port=3308 --socket=/tmp/mysqld3308.bak &amp;&nbsp;<br />
<br />
登录mysql<br />
./mysql -uroot -p --socket=/tmp/mysqld3308.bak
<img src ="http://www.blogjava.net/lqxue/aggbug/154678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-10-21 13:05 <a href="http://www.blogjava.net/lqxue/archive/2007/10/21/154678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 判断表是否存在</title><link>http://www.blogjava.net/lqxue/archive/2007/10/20/154496.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Sat, 20 Oct 2007 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/10/20/154496.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/154496.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/10/20/154496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/154496.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/154496.html</trackback:ping><description><![CDATA[SHOW &nbsp; TABLES &nbsp; LIKE &nbsp; '%tb_bp_d_case%';&nbsp;&nbsp; <br />
select `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_NAME`='res_mos_cpu_statistics'
<img src ="http://www.blogjava.net/lqxue/aggbug/154496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-10-20 14:58 <a href="http://www.blogjava.net/lqxue/archive/2007/10/20/154496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 创建触发器</title><link>http://www.blogjava.net/lqxue/archive/2007/09/07/143356.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 07 Sep 2007 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/09/07/143356.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/143356.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/09/07/143356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/143356.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/143356.html</trackback:ping><description><![CDATA[语法结构类似<br />
<p>DELIMITER $$;</p>
<p>DROP TRIGGER `log`$$</p>
<p>CREATE TRIGGER `log` BEFORE/AFTER INSERT/UPDATE/DELETE on `user`<br />
FOR EACH ROW BEGIN</p>
<p>END$$</p>
<p>DELIMITER ;$$</p>
具体例子：<br />
删除：<br />
<p>DELIMITER $$;</p>
<p>DROP TRIGGER `log`$$</p>
<p>CREATE TRIGGER `log` AFTER DELETE on `user`<br />
FOR EACH ROW BEGIN<br />
insert into userLog (useroid,userAccount,pwd,userType,companyInfoOid,personalInfoOid,<br />
status,regDate,email) values (old.oid,old.userAccount,old.pwd,old.userType,old.companyInfoOid,old.personalInfoOid,old.status,old.regDate,old.email);</p>
<p>END$$</p>
<p>DELIMITER ;$$<br />
<br />
如果是修改/的话，old应该是new</p>
 <img src ="http://www.blogjava.net/lqxue/aggbug/143356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-09-07 11:42 <a href="http://www.blogjava.net/lqxue/archive/2007/09/07/143356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL数据的导出和导入工具:mysqldump</title><link>http://www.blogjava.net/lqxue/archive/2007/08/28/140557.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Tue, 28 Aug 2007 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/08/28/140557.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/140557.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/08/28/140557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/140557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/140557.html</trackback:ping><description><![CDATA[<font color=#cccccc>导出要用到MySQL的mysqldump工具，基本用法是：&nbsp;&nbsp; <br><br>shell&gt;&nbsp;mysqldump&nbsp;[OPTIONS]&nbsp;database&nbsp;[tables]&nbsp;&nbsp; <br><br>如果你不给定任何表，整个数据库将被导出。&nbsp;&nbsp; <br><br>通过执行mysqldump&nbsp;--help，你能得到你mysqldump的版本支持的选项表。&nbsp;&nbsp; <br><br>注意，如果你运行mysqldump没有--quick或--opt选项，mysqldump将在导出结果前装载整个结果集到内存中，如果你正在导出一个大的数据库，这将可能是一个问题。&nbsp;&nbsp; <br><br>mysqldump支持下列选项：&nbsp;&nbsp; <br><br>--add-locks&nbsp;&nbsp; <br>在每个表导出之前增加LOCK&nbsp;TABLES并且之后UNLOCK&nbsp;TABLE。(为了使得更快地插入到MySQL)。&nbsp;&nbsp; <br>--add-drop-table&nbsp;&nbsp; <br>在每个create语句之前增加一个drop&nbsp;table。&nbsp;&nbsp; <br>--allow-keywords&nbsp;&nbsp; <br>允许创建是关键词的列名字。这由表名前缀于每个列名做到。&nbsp;&nbsp; <br>-c,&nbsp;--complete-insert&nbsp;&nbsp; <br>使用完整的insert语句(用列名字)。&nbsp;&nbsp; <br>-C,&nbsp;--compress&nbsp;&nbsp; <br>如果客户和服务器均支持压缩，压缩两者间所有的信息。&nbsp;&nbsp; <br>--delayed&nbsp;&nbsp; <br>用INSERT&nbsp;DELAYED命令插入行。&nbsp;&nbsp; <br>-e,&nbsp;--extended-insert&nbsp;&nbsp; <br>使用全新多行INSERT语法。（给出更紧缩并且更快的插入语句）&nbsp;&nbsp; <br>-#,&nbsp;--debug[=option_string]&nbsp;&nbsp; <br>跟踪程序的使用(为了调试)。&nbsp;&nbsp; <br>--help&nbsp;&nbsp; <br>显示一条帮助消息并且退出。&nbsp;&nbsp; <br>--fields-terminated-by=...&nbsp;&nbsp; <br>　&nbsp;&nbsp; <br>--fields-enclosed-by=...&nbsp;&nbsp; <br>　&nbsp;&nbsp; <br>--fields-optionally-enclosed-by=...&nbsp;&nbsp; <br>　&nbsp;&nbsp; <br>--fields-escaped-by=...&nbsp;&nbsp; <br>　&nbsp;&nbsp; <br>--fields-terminated-by=...&nbsp;&nbsp; <br>这些选择与-T选择一起使用，并且有相应的LOAD&nbsp;DATA&nbsp;INFILE子句相同的含义。&nbsp;&nbsp; <br>LOAD&nbsp;DATA&nbsp;INFILE语法。&nbsp;&nbsp; <br>-F,&nbsp;--flush-logs&nbsp;&nbsp; <br>在开始导出前，洗掉在MySQL服务器中的日志文件。&nbsp;&nbsp; <br>-f,&nbsp;--force,&nbsp;&nbsp; <br>即使我们在一个表导出期间得到一个SQL错误，继续。&nbsp;&nbsp; <br>-h,&nbsp;--host=..&nbsp;&nbsp; <br>从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。&nbsp;&nbsp; <br>-l,&nbsp;--lock-tables.&nbsp;&nbsp; <br>为开始导出锁定所有表。&nbsp;&nbsp; <br>-t,&nbsp;--no-create-info&nbsp;&nbsp; <br>不写入表创建信息(CREATE&nbsp;TABLE语句）&nbsp;&nbsp; <br>-d,&nbsp;--no-data&nbsp;&nbsp; <br>不写入表的任何行信息。如果你只想得到一个表的结构的导出，这是很有用的！&nbsp;&nbsp; <br>--opt&nbsp;&nbsp; <br>同--quick&nbsp;--add-drop-table&nbsp;--add-locks&nbsp;--extended-insert&nbsp;--lock-tables。&nbsp;&nbsp; <br>应该给你为读入一个MySQL服务器的尽可能最快的导出。&nbsp;&nbsp; <br>-pyour_pass,&nbsp;--password[=your_pass]&nbsp;&nbsp; <br>与服务器连接时使用的口令。如果你不指定&#8220;=your_pass&#8221;部分，mysqldump需要来自终端的口令。&nbsp;&nbsp; <br>-P&nbsp;port_num,&nbsp;--port=port_num&nbsp;&nbsp; <br>与一台主机连接时使用的TCP/IP端口号。（这用于连接到localhost以外的主机，因为它使用&nbsp;Unix套接字。）&nbsp;&nbsp; <br>-q,&nbsp;--quick&nbsp;&nbsp; <br>不缓冲查询，直接导出至stdout；使用mysql_use_result()做它。&nbsp;&nbsp; <br>-S&nbsp;/path/to/socket,&nbsp;--socket=/path/to/socket&nbsp;&nbsp; <br>与localhost连接时（它是缺省主机)使用的套接字文件。&nbsp;&nbsp; <br>-T,&nbsp;--tab=path-to-some-directory&nbsp;&nbsp; <br>对于每个给定的表，创建一个table_name.sql文件，它包含SQL&nbsp;CREATE&nbsp;命令，和一个table_name.txt文件，它包含数据。&nbsp;注意：这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx和--lines--xxx选项来定。&nbsp;&nbsp; <br>-u&nbsp;user_name,&nbsp;--user=user_name&nbsp;&nbsp; <br>与服务器连接时，MySQL使用的用户名。缺省值是你的Unix登录名。&nbsp;&nbsp; <br>-O&nbsp;var=option,&nbsp;--set-variable&nbsp;var=option设置一个变量的值。可能的变量被列在下面。&nbsp;&nbsp; <br>-v,&nbsp;--verbose&nbsp;&nbsp; <br>冗长模式。打印出程序所做的更多的信息。&nbsp;&nbsp; <br>-V,&nbsp;--version&nbsp;&nbsp; <br>打印版本信息并且退出。&nbsp;&nbsp; <br>-w,&nbsp;--where='where-condition'&nbsp;&nbsp; <br>只导出被选择了的记录；注意引号是强制的！&nbsp;&nbsp; <br>"--where=user='jimf'"&nbsp;"-wuserid&gt;1"&nbsp;"-wuserid&lt;1"&nbsp; <br><br>最常见的mysqldump使用可能制作整个数据库的一个备份：&nbsp; <br><br><span style="COLOR: red">mysqldump&nbsp;--opt&nbsp;database&nbsp;&gt;&nbsp;backup-file.sql</span><strong>&nbsp;&nbsp; </strong><br><br>但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的：&nbsp;&nbsp; <br><br>mysqldump&nbsp;--opt&nbsp;database&nbsp;|&nbsp;mysql&nbsp;--host=remote-host&nbsp;-C&nbsp;database&nbsp;&nbsp; <br><br>由于mysqldump导出的是完整的SQL语句，所以用mysql客户程序很容易就能把数据导入了：&nbsp;&nbsp; <br><br><strong><span style="COLOR: red">shell&gt;&nbsp;mysqladmin&nbsp;create&nbsp;target_db_name&nbsp;&nbsp; <br>shell&gt;&nbsp;mysql&nbsp;target_db_name&nbsp;&lt;&nbsp;backup-file.sql&nbsp; <br>就是&nbsp; <br>shell&gt;&nbsp;mysql&nbsp;库名&nbsp;&lt;&nbsp;文件名</span></strong>&nbsp; <br></font><br>摘自：<font color=#cccccc>(http://www.fanqiang.com)</font>
<img src ="http://www.blogjava.net/lqxue/aggbug/140557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-08-28 16:04 <a href="http://www.blogjava.net/lqxue/archive/2007/08/28/140557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[精华] [转贴]如何正确利用Rownum来限制查询所返回的行数？</title><link>http://www.blogjava.net/lqxue/archive/2007/08/27/139789.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 27 Aug 2007 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/08/27/139789.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/139789.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/08/27/139789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/139789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/139789.html</trackback:ping><description><![CDATA[<font id="zoom" class="f14">
如何正确利用Rownum来限制查询所返回的行数？&nbsp;
<br>软件环境：&nbsp;
<br>1、Windows&nbsp;NT4.0+ORACLE&nbsp;8.0.4
<br>2、ORACLE安装路径为：C:\ORANT
<br>
<br>含义解释：&nbsp;
<br>1、rownum是oracle系统顺序分配为从查询返回的行的编号，返回的第一行分配的是1，第二行是2，
<br>　&nbsp;依此类推，这个伪字段可以用于限制查询返回的总行数。
<br>2、rownum不能以任何基表的名称作为前缀。&nbsp;
<br>使用方法：&nbsp;
<br>现有一个商品销售表sale，表结构为：
<br>month　　　&nbsp;char(6)　　　　　&nbsp;--月份
<br>sell　　　　number(10,2)　　　--月销售金额
<br>
<br>create&nbsp;table&nbsp;sale&nbsp;(month&nbsp;char(6),sell&nbsp;number);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200001',1000);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200002',1100);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200003',1200);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200004',1300);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200005',1400);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200006',1500);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200007',1600);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200101',1100);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200202',1200);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200301',1300);
<br>insert&nbsp;into&nbsp;sale&nbsp;values('200008',1000);
<br>commit;
<br>
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum=1;（可以用在限制返回记录条数的地方，保证不出错，如：隐式游标）
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum=2;（1以上都查不到记录）
<br>
<br>没有查到记录
<br>
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum&gt;;5;
<br>（由于rownum是一个总是从1开始的伪列，Oracle&nbsp;认为这种条件不成立，查不到记录）
<br>
<br>
<br>没有查到记录
<br>
<br>只返回前3条纪录
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum&lt;4;
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;200002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;200003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>
<br>
<br>如何用rownum实现大于、小于逻辑？（返回rownum在4—10之间的数据）（minus操作，速度会受影响）
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum&lt;10
<br>&nbsp;&nbsp;2&nbsp;&nbsp;minus
<br>&nbsp;&nbsp;3&nbsp;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;where&nbsp;rownum&lt;5;
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>
<br>想按日期排序，并且用rownum标出正确序号（有小到大）
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;sale&nbsp;order&nbsp;by&nbsp;month;
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;200002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;200003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;200004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;200008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;200301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>
<br>查询到11记录.
<br>
<br>可以发现，rownum并没有实现我们的意图，系统是按照记录入库时的顺序给记录排的号，rowid也是顺序分配的
<br>
<br>SQL&gt;;&nbsp;select&nbsp;rowid,rownum,month,sell&nbsp;from&nbsp;sale&nbsp;order&nbsp;by&nbsp;rowid;
<br>
<br>ROWID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>------------------&nbsp;---------&nbsp;------&nbsp;---------
<br>000000E4.0000.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>000000E4.0001.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;200002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>000000E4.0002.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;200003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>000000E4.0003.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;200004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>000000E4.0004.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>000000E4.0005.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>000000E4.0006.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>000000E4.0007.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>000000E4.0008.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>000000E4.0009.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;200301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>000000E4.000A.0002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;200008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>
<br>查询到11记录.
<br>
<br>正确用法，使用子查询
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;(select&nbsp;month,sell&nbsp;from&nbsp;sale&nbsp;group&nbsp;by&nbsp;month,sell)&nbsp;where&nbsp;rownum&lt;13;
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;200002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;200003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;200004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;200202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;200301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>
<br>按销售金额排序，并且用rownum标出正确序号（有小到大）
<br>SQL&gt;;&nbsp;select&nbsp;rownum,month,sell&nbsp;from&nbsp;(select&nbsp;sell,month&nbsp;from&nbsp;sale&nbsp;group&nbsp;by&nbsp;sell,month)&nbsp;where&nbsp;rownum&lt;13;
<br>
<br>&nbsp;&nbsp;&nbsp;ROWNUM&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>---------&nbsp;------&nbsp;---------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;200001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;200008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;200002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200202&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1200
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200301&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1300
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>
<br>查询到11记录.
<br>
<br>利用以上方法，如在打印报表时，想在查出的数据中自动加上行号，就可以利用rownum。
<br>
<br>返回第5—9条纪录，按月份排序
<br>SQL&gt;;&nbsp;select&nbsp;*&nbsp;from&nbsp;(select&nbsp;rownum&nbsp;row_id&nbsp;,month,sell&nbsp;
<br>&nbsp;&nbsp;2&nbsp;&nbsp;from&nbsp;(select&nbsp;month,sell&nbsp;from&nbsp;sale&nbsp;group&nbsp;by&nbsp;month,sell))&nbsp;
<br>&nbsp;&nbsp;3&nbsp;&nbsp;where&nbsp;row_id&nbsp;between&nbsp;5&nbsp;and&nbsp;9;
<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;ROW_ID&nbsp;MONTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELL
<br>----------&nbsp;------&nbsp;----------
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;200005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1400
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6&nbsp;200006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1500
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;200007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1600
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;200008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9&nbsp;200101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1100<br><br><br><br></font><font id="zoom" class="f14">
原文链接：<a  href="http://bbs.chinaunix.net/viewthread.php?tid=261521">http://bbs.chinaunix.net/viewthread.php?tid=261521</a><br>
转载请注明作者名及原文出处</font><br><img src ="http://www.blogjava.net/lqxue/aggbug/139789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-08-27 10:28 <a href="http://www.blogjava.net/lqxue/archive/2007/08/27/139789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]有关MYSQLDUMP的详细解释</title><link>http://www.blogjava.net/lqxue/archive/2007/07/09/128984.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 09 Jul 2007 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/07/09/128984.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/128984.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/07/09/128984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/128984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/128984.html</trackback:ping><description><![CDATA[<a href="http://www.phpchina.com/viewnews_11459.html">http://www.phpchina.com/viewnews_11459.html</a> <br />
<br />
、如果是以前导出的文件，导入的时候遇到错误：<br />
<br />
　　Got a packet bigger than &#8216;max_allowed_packet&#8217; bytes<br />
<br />
　　or<br />
<br />
　　ERROR 1153 (08S01) at line 616: Got a packet bigger than &#8216;max_allowed_packet&#8217; by<br />
<br />
　　tes<br />
<br />
　　就需要修改mysql的最大允许包大小了，编辑my.ini，在[mysqld]部分（不在这部分没用）添加一句：<br />
<br />
　　set-variable=max_allowed_packet=10485760<br />
<br />
　　重启mysql服务就可以了，我这里设置的是大约10M。<br />
<br />
<img src ="http://www.blogjava.net/lqxue/aggbug/128984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-07-09 10:18 <a href="http://www.blogjava.net/lqxue/archive/2007/07/09/128984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]Spring 中 C3p0 connection pooling 的配置</title><link>http://www.blogjava.net/lqxue/archive/2007/07/03/127952.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Tue, 03 Jul 2007 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/07/03/127952.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/127952.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/07/03/127952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/127952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/127952.html</trackback:ping><description><![CDATA[<font size=2>Spring 的 DataSource bean 定义如下, 把可变的变量抽出放在db.properties file中, 方便修改 db.properties file只要放在当前项目的classes路径下,或放在Tomcat 的Shared/classes下, Spring 就可以找到<br>&lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="driverClass"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${jdbc.driver}&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="jdbcUrl"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;${jdbc.url}&lt;/value&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br>&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="acquireIncrement"&gt;&lt;value&gt;${hibernate.c3p0.acquire_increment}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="idleConnectionTestPeriod"&gt;&lt;value&gt;${hibernate.c3p0.idle_test_period}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="checkoutTimeout"&gt;&lt;value&gt;${hibernate.c3p0.timeout}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxPoolSize"&gt;&lt;value&gt;${hibernate.c3p0.max_size}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="minPoolSize"&gt;&lt;value&gt;${hibernate.c3p0.min_size}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="maxStatements"&gt;&lt;value&gt;${hibernate.c3p0.max_statements}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="initialPoolSize"&gt;&lt;value&gt;${hibernate.c3p0.min_size}&lt;/value&gt;&lt;/property&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="user"&gt;&lt;value&gt;${jdbc.username}&lt;/value&gt;&lt;/property&gt; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="password"&gt;&lt;value&gt;${jdbc.password}&lt;/value&gt;&lt;/property&gt; <br>&nbsp;&nbsp;&nbsp; &lt;/bean&gt;<br><br>db.properties 如下<br>&nbsp;jdbc.driver=com.mysql.jdbc.Driver<br>jdbc.url=jdbc:mysql://localhost:3306/zyw?useUnicode=true&amp;characterEncoding=GBK<br>jdbc.username=root<br>jdbc.password=root<br>hibernate.dialect=org.hibernate.dialect.MySQL5Dialect<br>hibernate.show_sql=true<br>hibernate.format_sql=false<br>hibernate.c3p0.min_size=80<br>hibernate.c3p0.max_size=80<br>hibernate.c3p0.timeout=3000<br>hibernate.c3p0.max_statements=6000<br>hibernate.c3p0.idle_test_period=3000<br>hibernate.c3p0.acquire_increment=5<br><br><br>下面是一些可供使用的项：<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>maxIdleTime：</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span>&lt;!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --&gt;<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>acquireIncrement</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span>：&lt;!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --&gt;<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>&nbsp;<span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>maxStatements</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span>：&lt;!--JDBC的标准参数，用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果maxStatements与maxStatementsPerConnection均为0，则缓存被关闭。Default: 0--&gt;<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>idleConnectionTestPeriod</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span>：&lt;!--每60秒检查所有连接池中的空闲连接。Default: 0 --&gt;<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>acquireRetryAttempts：<span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>&nbsp;&lt;!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --&gt;<br><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>breakAfterAcquireFailure:<span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>&nbsp;&lt;!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保留，并在下次调用getConnection()的时候继续尝试获取连接。如果设为true，那么在尝试<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;获取连接失败后该数据源将申明已断开并永久关闭。Default: false--&gt;<br></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: teal" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>&nbsp;<span lang=EN-US style="FONT-SIZE: 9pt; COLOR: rgb(42,0,255)" courier=""><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000><font color=#000000>testConnectionOnCheckout</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span>：&lt;!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的<br>&nbsp; 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable<br>&nbsp; 等方法来提升连接测试的性能。Default: false --&gt;</font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span><br></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></font></span></font>
<img src ="http://www.blogjava.net/lqxue/aggbug/127952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-07-03 21:24 <a href="http://www.blogjava.net/lqxue/archive/2007/07/03/127952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]truncate,delete,drop的异同点</title><link>http://www.blogjava.net/lqxue/archive/2007/07/02/127578.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 02 Jul 2007 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/07/02/127578.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/127578.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/07/02/127578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/127578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/127578.html</trackback:ping><description><![CDATA[注意:这里说的delete是指不带where子句的delete语句 <br>相同点 <br>truncate和不带where子句的delete,&nbsp;以及drop都会删除表内的数据 <br><br>不同点: <br>1.&nbsp;truncate和&nbsp;delete只删除数据不删除表的结构(定义) <br>&nbsp;&nbsp;&nbsp;&nbsp;drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);&nbsp;依赖于该表的存储过程/函数将保留,但是变为invalid状态. <br>2.delete语句是dml,这个操作会放到rollback&nbsp;segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. <br>&nbsp;&nbsp;&nbsp;truncate,drop是ddl,&nbsp;操作立即生效,原数据不放到rollback&nbsp;segment中,不能回滚.&nbsp;操作不触发trigger. <br>3.delete语句不影响表所占用的extent,&nbsp;高水线(high&nbsp;watermark)保持原位置不动 <br>&nbsp;&nbsp;显然drop语句将表所占用的空间全部释放 <br>&nbsp;&nbsp;truncate&nbsp;语句缺省情况下见空间释放到&nbsp;minextents个&nbsp;extent,除非使用reuse&nbsp;storage;&nbsp;&nbsp;&nbsp;truncate会将高水线复位(回到最开始). <br>4.速度,一般来说:&nbsp;drop&gt;;&nbsp;truncate&nbsp;&gt;;&nbsp;delete <br>5.安全性:小心使用drop&nbsp;和truncate,尤其没有备份的时候.否则哭都来不及 <br>使用上,想删除部分数据行用delete,注意带上where子句.&nbsp;回滚段要足够大. <br>想删除表,当然用drop <br>想保留表而将所有数据删除.&nbsp;如果和事务无关,用truncate即可.&nbsp;如果和事务有关,或者想触发trigger,还是用delete. <br>如果是整理表内部的碎片,可以用truncate跟上reuse&nbsp;stroage,再重新导入/插入数据 <br><br>摘自：http://www.chinaunix.net/jh/19/252763.html <br>
<img src ="http://www.blogjava.net/lqxue/aggbug/127578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-07-02 16:03 <a href="http://www.blogjava.net/lqxue/archive/2007/07/02/127578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PreparedStatement</title><link>http://www.blogjava.net/lqxue/archive/2007/07/02/127574.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Mon, 02 Jul 2007 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/07/02/127574.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/127574.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/07/02/127574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/127574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/127574.html</trackback:ping><description><![CDATA[表示预编译的 SQL 语句的对象。 SQL 语句被预编译并且存储在 <br>&lt;CODE&gt;PreparedStatement&lt;/CODE&gt; 对象中。然后可以使用此对象高效地多次执行该语句&lt;/P&gt; <br>
<img src ="http://www.blogjava.net/lqxue/aggbug/127574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-07-02 15:52 <a href="http://www.blogjava.net/lqxue/archive/2007/07/02/127574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>乐观锁和悲观锁</title><link>http://www.blogjava.net/lqxue/archive/2007/06/29/127109.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Fri, 29 Jun 2007 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/06/29/127109.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/127109.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/06/29/127109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/127109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/127109.html</trackback:ping><description><![CDATA[锁有两种：悲观锁和乐观锁。悲观锁假定其他用户企图访问或者改变你正在访问、更改的对象的概率是很高的，因此在悲观锁的环境中，在你开始改变此对象之前就将该对象锁住，并且直到你提交了所作的更改之后才释放锁。悲观的缺陷是不论是页锁还是行锁，加锁的时间可能会很长，这样可能会长时间的限制其他用户的访问，也就是说悲观锁的并发访问性不好。与悲观锁相反，乐观锁则认为其他用户企图改变你正在更改的对象的概率是很小的，因此乐观锁直到你准备提交所作的更改时才将对象锁住，当你读取以及改变该对象时并不加锁。可见乐观锁加锁的时间要比悲观锁短，乐观锁可以用较大的锁粒度获得较好的并发访问性能。但是如果第二个用户恰好在第一个用户提交更改之前读取了该对象，那么当他完成了自己的更改进行提交时，数据库就会发现该对象已经变化了，这样，第二个用户不得不重新读取该对象并作出更改。这说明在乐观锁环境中，会增加并发用户读取对象的次数。 
<img src ="http://www.blogjava.net/lqxue/aggbug/127109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-06-29 17:25 <a href="http://www.blogjava.net/lqxue/archive/2007/06/29/127109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收藏]MySQL on Linux手动安装方法</title><link>http://www.blogjava.net/lqxue/archive/2007/06/19/125130.html</link><dc:creator>lqx</dc:creator><author>lqx</author><pubDate>Tue, 19 Jun 2007 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/lqxue/archive/2007/06/19/125130.html</guid><wfw:comment>http://www.blogjava.net/lqxue/comments/125130.html</wfw:comment><comments>http://www.blogjava.net/lqxue/archive/2007/06/19/125130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lqxue/comments/commentRss/125130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lqxue/services/trackbacks/125130.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">1.&nbsp;下载"mysql-standard-5.0.27-Linux-i686-icc-glibc23.tar.gz"，推荐ICC版本，据称比GCC性能提高10-20%<br><br>2.&nbsp;复制到/usr/local/，解压：tar&nbsp;zxvf&nbsp;mysql-standard-5.x<img src="http://www.blogjava.net/Images/dot.gif">.tar.gz<br><br>3.&nbsp;添加用户和组mysql：<br><br>groupadd&nbsp;mysql<br><br>useradd&nbsp;-g&nbsp;mysql&nbsp;mysql<br><br>4.&nbsp;创建符号连接：/usr/local&nbsp;#&nbsp;ln&nbsp;-s&nbsp;mysql-standard-5.x<img src="http://www.blogjava.net/Images/dot.gif">&nbsp;mysql<br><br>5.&nbsp;cd&nbsp;mysql，当前目录改为/usr/local/mysql/<br><br>6.&nbsp;运行脚步初始化数据库：./scripts/mysql_install_db&nbsp;--user=mysql<br><br>7.&nbsp;设置权限：<br><br>/usr/local/mysql&nbsp;#&nbsp;chown&nbsp;-R&nbsp;root&nbsp;.<br><br>/usr/local/mysql&nbsp;#&nbsp;chown&nbsp;-R&nbsp;mysql&nbsp;data<br><br>/usr/local/mysql&nbsp;#&nbsp;chgrp&nbsp;-R&nbsp;mysql<br><br>8.&nbsp;根据需要创建并修改/etc/my.cnf，参考配置：<br><br>[mysqld]<br><br>#&nbsp;设置默认为INNODB表，支持事务：<br><br>default-storage-engine=INNODB<br><br>#&nbsp;设置默认的字符集：<br><br>default-character-set=utf8<br><br>#&nbsp;禁用bdb：<br><br>skip-bdb<br><br><strong>9.&nbsp;启动MySQL：<br><br>/usr/local/mysql/bin&nbsp;#&nbsp;./mysqld_safe&nbsp;--user=mysql&nbsp;&amp;</strong><br><br><span style="COLOR: red"><strong>10.&nbsp;初始化root口令：<br><br>/usr/local/mysql/bin&nbsp;#&nbsp;./mysqladmin&nbsp;-u&nbsp;root&nbsp;-p&nbsp;password&nbsp;"password-of-root"</strong></span><br><br>Enter&nbsp;password:&nbsp;&lt;输入旧口令，直接按Enter&gt;<br><br><strong>11.&nbsp;以root登录创建数据库：<br><br>/usr/local/mysql&nbsp;#&nbsp;./mysql&nbsp;-u&nbsp;root&nbsp;-p<br><br>Enter&nbsp;password:&nbsp;password-of-root</strong><br><br><span style="COLOR: red">创建一个新用户：<br><br>mysql&gt;&nbsp;create&nbsp;user&nbsp;test&nbsp;identified&nbsp;by&nbsp;'test-password';</span><br><br><strong>创建一个新数据库：<br><br>mysql&gt;&nbsp;create&nbsp;database&nbsp;testdb;</strong><br><br><span style="COLOR: red"><strong>赋予test用户从localhost访问testdb的权限：<br></strong></span><br>mysql&gt;&nbsp;grant&nbsp;all&nbsp;privileges on&nbsp;testdb.*&nbsp;to&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#116;&#101;&#115;&#116;&#39;&#64;&#39;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;&#39;&#59;&#47;&#47;&#27492;&#22788;&#26159;&#20801;&#35768;&#116;&#101;&#115;&#116;&#29992;&#25143;&#36890;&#36807;&#26412;&#22320;&#35775;&#38382;&#25968;&#25454;&#24211;&#65292;&#22914;&#26524;&#24819;&#35753;&#116;&#101;&#115;&#116;&#29992;&#25143;&#21487;&#20197;&#22312;&#20219;&#24847;&#22320;&#22336;&#35775;&#38382;&#35813;&#25968;&#25454;&#24211;&#21487;&#20197;&#20889;&#25104;&#38;&#110;&#98;&#115;&#112;&#59;&#38;&#110;&#98;&#115;&#112;&#59;&#38;&#110;&#98;&#115;&#112;&#59;&#38;&#110;&#98;&#115;&#112;&#59;&#38;&#110;&#98;&#115;&#112;&#59;&#103;&#114;&#97;&#110;&#116;">'test'@'localhost';//此处是允许test用户通过本地访问数据库，如果想让test用户可以在任意地址访问该数据库可以写成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grant</a> all privileges on testdb.* to 'test'@'%';<br><br>为test 用户设定密码：<br>1、首先以test用户登录到数据库，eg. mysql -utest -p<br>2、提示输入密码时直接回车即可。<br>3、进入mysql后使用如下命令可以为tes设定密码：SET PASSWORD = PASSWORD('biscuit');<br><br><br><span style="COLOR: red">停止MySQL服务器：<br><br>/usr/local/mysql/bin&nbsp;#&nbsp;./mysqladmin&nbsp;-u&nbsp;root&nbsp;-p&nbsp;shutdown<br><br>Enter&nbsp;password:&nbsp;password-of-root<br><br>STOPPING&nbsp;server&nbsp;from&nbsp;pid&nbsp;file&nbsp;/usr/local/mysql/data/debian.pid<br><br>xxx&nbsp;mysqld&nbsp;ended</span></div>
源自：http://www.linuxdiyf.com/viewarticle.php?id=48495 <br>http://bbs.mysql.cn/thread-1614-1-1.html <br>http://www.chinaunix.net/jh/17/712043.html <br>关于mysql用户管理，参考：<a href="http://blog.chinaunix.net/u/19185/showart_156037.html">http://blog.chinaunix.net/u/19185/showart_156037.html</a><br>
<img src ="http://www.blogjava.net/lqxue/aggbug/125130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lqxue/" target="_blank">lqx</a> 2007-06-19 15:22 <a href="http://www.blogjava.net/lqxue/archive/2007/06/19/125130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>