<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>朝圣者(梁鹏) &#187; 数据库技术</title>
	<atom:link href="http://www.liangpeng.net/ycategory/shujuku/feed" rel="self" type="application/rss+xml" />
	<link>http://www.liangpeng.net</link>
	<description>寻找一小块属于自己的栖息地</description>
	<lastBuildDate>Tue, 07 Sep 2010 08:26:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>mysql获取随机数据的问题，很纳闷</title>
		<link>http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html</link>
		<comments>http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html#comments</comments>
		<pubDate>Mon, 21 Jun 2010 06:21:31 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[随机]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=1212</guid>
		<description><![CDATA[记得以前找到过方法，而且可用，忘记了，重新google，发现网上提供的方法，有些问题： 一个简单的实现如下： SELECT * FROM `table` WHERE id &#62;= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(... ]]></description>
			<content:encoded><![CDATA[<p>记得以前找到过方法，而且可用，忘记了，重新google，发现网上提供的方法，有些问题：</p>
<p>一个简单的实现如下：</p>
<p>SELECT * FROM `table`<br />
WHERE id &gt;= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))<br />
ORDER BY id LIMIT 1;<br />
简化测试可以写为：select * from `table` where id&gt;=(select rand()*(select max(id) from `table`)) limit 10</p>
<p>据我测试<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>5.1  如果table有20000条数据，基本没有可能获取到一条大于1000的数据，我也搞不清楚原因，难道是我的<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>版本问题？真是奇怪了。继续测试。<br />
将limit 1 改为10后，结果发现，返回的数据依然不能超过1000，而且结果的id不连续，则说明<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>是逐条执行了where的rand，即执行了20000次，这是我的估计，毕竟我不是mysql专家，不知道如何研究。即便是这样，那么每条的几率依然应该是1/20000分之一的，为何结果却出乎意料？<br />
换了一个mysql服务器，5.1.41，结果依然如此。</p>
<p>找到原来的写法了，很简单：<span style="color: #ff0000;">order by rand() limit 10</span>,,如果数据大可以用id in (select rand()*max(id) from t,..,..) ，呵呵，这是从别人那看到的。另外附加sql server的写法：select top 10 * from tablename order by newid()</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m06/jieshaomysqlshujukuxiashowminglingdezhuyaoyongfa_696.html" title="介绍mysql数据库下show命令的主要用法">介绍mysql数据库下show命令的主要用法</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m05/mysqldechaxunrizhi_643.html" title="mysql的查询日志">mysql的查询日志</a> (0)</li><li><a href="http://www.liangpeng.net/y2008/m09/%e5%9c%a8-ubuntu-%e4%b8%8a%e6%90%ad%e5%bb%ba-l2mp-%e6%9c%8d%e5%8a%a1%e5%99%a8_322.html" title="在 Ubuntu 上搭建 L2MP 服务器">在 Ubuntu 上搭建 L2MP 服务器</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 表删除大量数据后查询变慢问题(转)</title>
		<link>http://www.liangpeng.net/y2009/m11/oraclebiaoshanchudaliangshujuhouchaxunbianmanwentizhuan_907.html</link>
		<comments>http://www.liangpeng.net/y2009/m11/oraclebiaoshanchudaliangshujuhouchaxunbianmanwentizhuan_907.html#comments</comments>
		<pubDate>Fri, 27 Nov 2009 03:36:17 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[删除]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=907</guid>
		<description><![CDATA[转自：http://hi.baidu.com/bbz_dd_a/blog/item/1c962bf4b69666dff2d38588.html 公司的oracle狂慢，估计是配置没搞好吧，自己也不会只能凑合用了，google发现如下好文章，收藏之 Oracle 表删除大量数据后，即使表中... ]]></description>
			<content:encoded><![CDATA[<div id="blog_text">
<p>转自：http://hi.baidu.com/bbz_dd_a/blog/item/1c962bf4b69666dff2d38588.html</p>
<p><em>公司的<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/oracle" title="查看 oracle 的全部文章" target="_blank">oracle</a></span>狂慢，估计是配置没搞好吧，自己也不会只能凑合用了，google发现如下好文章，收藏之</em></p>
<p>Oracle 表<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e5%88%a0%e9%99%a4" title="查看 删除 的全部文章" target="_blank">删除</a></span>大量数据后，即使表中只有几行记录，但用select count(*) from table 来查询发觉都不会马上出来，原因是该表的空间大了，查询起来很慢。解决的方法是把该表所占用的表空间缩小，或者说释放表空间。</p>
<p>alter table XXXX move; 这样处理后就释放了表空间了。但是释放表空间后，表的行号rowid会发生变化，而基于rowid的索引则会变成无效。因此该操作后必须重建索引。否则会 提示“ORA-01502: 索引&#8217;SMP.ITEMLOG_MID_IDX&#8217;或这类索引的分区处于不可用状态” 而重建索引的方法当然可以先drop掉再create ，但是这样太麻烦了，用alter index XXX rebuild 这样最快了，不会改变原来的索引结构。</p></div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m06/buanzhuangoraclekehuduanyunxingplsqldeveloper_690.html" title="不安装Oracle客户端运行pl/sql developer">不安装Oracle客户端运行pl/sql developer</a> (1)</li><li><a href="http://www.liangpeng.net/y2009/m06/oraclealteryujuxiugaishujubiao_668.html" title="Oracle ALTER 语句修改数据表">Oracle ALTER 语句修改数据表</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m11/oraclebiaoshanchudaliangshujuhouchaxunbianmanwentizhuan_907.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>介绍mysql数据库下show命令的主要用法</title>
		<link>http://www.liangpeng.net/y2009/m06/jieshaomysqlshujukuxiashowminglingdezhuyaoyongfa_696.html</link>
		<comments>http://www.liangpeng.net/y2009/m06/jieshaomysqlshujukuxiashowminglingdezhuyaoyongfa_696.html#comments</comments>
		<pubDate>Tue, 16 Jun 2009 13:43:33 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[show命令]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=696</guid>
		<description><![CDATA[转载：作者: ddvip, 　出处:IT专家网论坛   http://database.ctocio.com.cn/227/8902727.shtml 本文主要介绍mysql数据库下show命令的主要用法： a. show tables或show tables from database_name; &#8212; 显示当前数据库中所有... ]]></description>
			<content:encoded><![CDATA[<div style="padding: 0px; margin: 0px;"><span id="contentAdv" style="float: left; margin-right: 10px;"> </span></div>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">转载：作者: ddvip, 　出处:IT专家网论坛   <a href="http://database.ctocio.com.cn/227/8902727.shtml">http://database.ctocio.com.cn/227/8902727.shtml</a></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">本文主要介绍<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>数据库下<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/show%e5%91%bd%e4%bb%a4" title="查看 show命令 的全部文章" target="_blank">show命令</a></span>的主要用法：</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">a. show tables或show tables from database_name; &#8212; 显示当前数据库中所有表的名称。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">b. show databases; &#8212; 显示<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>中所有数据库的名称。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">c. show columns from table_name from database_name; 或show columns from database_name.table_name; &#8212; 显示表中列名称。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">d. show grants for user_name; &#8212; 显示一个用户的权限，显示结果类似于grant 命令。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">e. show index from table_name; &#8212; 显示表的索引。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">f. show status; &#8212; 显示一些系统特定资源的信息，例如，正在运行的<a style="text-decoration: none; color: #bc0e07; font-weight: bold;" href="http://whatis.ctocio.com.cn/searchwhatis/146/7352146.shtml" target="_bank">线程</a>数量。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">g. show variables; &#8212; 显示系统变量的名称和值。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">h. show processlist; &#8212; 显示系统中正在运行的所有<a style="text-decoration: none; color: #bc0e07; font-weight: bold;" href="http://whatis.ctocio.com.cn/searchwhatis/292/7333792.shtml" target="_bank">进程</a>，也就是当前正在执行的查询。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">i. show <a style="text-decoration: none; color: #bc0e07; font-weight: bold;" href="http://whatis.ctocio.com.cn/searchwhatis/456/6028456.shtml" target="_bank">table</a> status; &#8212; 显示当前使用或者指定的<a style="text-decoration: none; color: #bc0e07; font-weight: bold;" href="http://whatis.ctocio.com.cn/searchwhatis/132/5947632.shtml" target="_bank">database</a>中的每个表的信息。信息包括表类型和表的最新更新时间。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">j. show <a style="text-decoration: none; color: #bc0e07; font-weight: bold;" href="http://whatis.ctocio.com.cn/searchwhatis/305/6026305.shtml" target="_bank">privileges</a>; &#8212; 显示服务器所支持的不同权限。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">k. show create database database_name; &#8212; 显示create database 语句是否能够创建指定的数据库。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">l. show create table table_name; &#8212; 显示create database 语句是否能够创建指定的数据库。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">m. show engies; &#8212; 显示安装以后可用的存储引擎和默认引擎。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">n. show innodb status; &#8212; 显示innoDB存储引擎的状态。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">o. show logs; &#8212; 显示BDB存储引擎的日志。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">p. show warnings; &#8212; 显示最后一个执行的语句所产生的错误、警告和通知。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">q. show errors; &#8212; 只显示最后一个执行语句所产生的错误。</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; font-size: 14px; line-height: 25px; padding: 0px;">r. show [storage] engines; &#8211;显示安装后的可用存储引擎和默认引擎。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html" title="mysql获取随机数据的问题，很纳闷">mysql获取随机数据的问题，很纳闷</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m05/mysqldechaxunrizhi_643.html" title="mysql的查询日志">mysql的查询日志</a> (0)</li><li><a href="http://www.liangpeng.net/y2008/m09/%e5%9c%a8-ubuntu-%e4%b8%8a%e6%90%ad%e5%bb%ba-l2mp-%e6%9c%8d%e5%8a%a1%e5%99%a8_322.html" title="在 Ubuntu 上搭建 L2MP 服务器">在 Ubuntu 上搭建 L2MP 服务器</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m06/jieshaomysqlshujukuxiashowminglingdezhuyaoyongfa_696.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不安装Oracle客户端运行pl/sql developer</title>
		<link>http://www.liangpeng.net/y2009/m06/buanzhuangoraclekehuduanyunxingplsqldeveloper_690.html</link>
		<comments>http://www.liangpeng.net/y2009/m06/buanzhuangoraclekehuduanyunxingplsqldeveloper_690.html#comments</comments>
		<pubDate>Sat, 13 Jun 2009 02:39:19 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pl/sql]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=690</guid>
		<description><![CDATA[Sql客户端中，虽然最便捷的是万能而且轻量无比的Sql Workbench，唯一的遗憾是只支持JDK5,不过这个小小的遗憾只要配置配置就能避免。 Otherwise，Oracle来说，用起来最爽的应该还是pl/sql Developer。只... ]]></description>
			<content:encoded><![CDATA[<p>Sql客户端中，虽然最便捷的是万能而且轻量无比的Sql Workbench，唯一的遗憾是只支持JDK5,不过这个小小的遗憾只要配置配置就能避免。</p>
<p>Otherwise，Oracle来说，用起来最爽的应该还是<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/plsql" title="查看 pl/sql 的全部文章" target="_blank">pl/sql</a></span> Developer。只是开发机器上懒得装肥硕的Oracle，即使是客户端也是笨重无比。</p>
<p>所幸发现了一个Windows下免安装Oracle客户端就能使用<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/plsql" title="查看 pl/sql 的全部文章" target="_blank">pl/sql</a></span> <span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/developer" title="查看 developer 的全部文章" target="_blank">developer</a></span>轻便的方法，分享：</p>
<p>1.从http://www.<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/oracle" title="查看 oracle 的全部文章" target="_blank">oracle</a></span>.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html中 Download Instant Client，注意2个basic包下一个即可，不推荐basiclife</p>
<p>2,在磁盘创建上目录，解压过去，最终解压文件会在同一个目录下。比如解压到c:\<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/oracle" title="查看 oracle 的全部文章" target="_blank">oracle</a></span>client</p>
<p>3,创建目录c:\<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/oracle" title="查看 oracle 的全部文章" target="_blank">oracle</a></span>client\network\admin</p>
<p>4,创建文件tnsnames.ora 内容如下</p>
<p>oracledata =<br />
(DESCRIPTION =<br />
(ADDRESS_LIST =<br />
(ADDRESS = (PROTOCOL = TCP)(HOST = yourhostIp )(PORT = 1521))<br />
)<br />
(CONNECT_DATA =<br />
(SERVICE_NAME = yourSID )<br />
)<br />
)</p>
<p>5,设置pl/sql Developer的perference，主要填二个文本框 OCI Library:“c:\oracleclient\oci.dll”, Oracle_home: &#8220;c:\oracleclient\&#8221;</p>
<p>6,重启pl/sql <span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/developer" title="查看 developer 的全部文章" target="_blank">developer</a></span>, 输入用户名密码，以及tnsnames.ora设置的oracledata, Enjoy it.</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m11/oraclebiaoshanchudaliangshujuhouchaxunbianmanwentizhuan_907.html" title="Oracle 表删除大量数据后查询变慢问题(转)">Oracle 表删除大量数据后查询变慢问题(转)</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m06/oraclealteryujuxiugaishujubiao_668.html" title="Oracle ALTER 语句修改数据表">Oracle ALTER 语句修改数据表</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m06/buanzhuangoraclekehuduanyunxingplsqldeveloper_690.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle ALTER 语句修改数据表</title>
		<link>http://www.liangpeng.net/y2009/m06/oraclealteryujuxiugaishujubiao_668.html</link>
		<comments>http://www.liangpeng.net/y2009/m06/oraclealteryujuxiugaishujubiao_668.html#comments</comments>
		<pubDate>Tue, 02 Jun 2009 06:46:32 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[修改]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=668</guid>
		<description><![CDATA[ALTER 语句修改数据表 1.修改数据表名 ALTER TABLE [方案名.]OLD_TABLE_NAME RENAME TO NEW_TABLE_NAME; 2.修改列名 ALTER TABLE [方案名.]TABLE_NAME RENAME COLUMN OLD_COLUMN_NAME TO NEW_COLUMN_NAME; 3.修改列的数据类型 ALTER TABLE [... ]]></description>
			<content:encoded><![CDATA[<div>ALTER 语句<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%bf%ae%e6%94%b9" title="查看 修改 的全部文章" target="_blank">修改</a></span>数据表</div>
<div>1.<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%bf%ae%e6%94%b9" title="查看 修改 的全部文章" target="_blank">修改</a></span>数据表名<br />
ALTER TABLE [方案名.]OLD_TABLE_NAME RENAME TO NEW_TABLE_NAME;</div>
<div>2.修改列名<br />
ALTER TABLE [方案名.]TABLE_NAME RENAME COLUMN OLD_COLUMN_NAME TO NEW_COLUMN_NAME;</div>
<div>3.修改列的数据类型<br />
ALTER TABLE [方案名.]TABLE_NAME MODIFY COLUMN_NAME NEW_DATATYPE;</div>
<div>4.插入列<br />
ALTER TABLE [方案名.]TABLE_NAME ADD COLUMN_NAME DATATYPE;</div>
<div>5.删除列<br />
ALTER TABLE [方案名.]TABLE_NAME DROP COLUMN COLUMN_NAME;</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m11/oraclebiaoshanchudaliangshujuhouchaxunbianmanwentizhuan_907.html" title="Oracle 表删除大量数据后查询变慢问题(转)">Oracle 表删除大量数据后查询变慢问题(转)</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m06/buanzhuangoraclekehuduanyunxingplsqldeveloper_690.html" title="不安装Oracle客户端运行pl/sql developer">不安装Oracle客户端运行pl/sql developer</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m06/oraclealteryujuxiugaishujubiao_668.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简单统计SQLServer用户数据表大小</title>
		<link>http://www.liangpeng.net/y2009/m06/jiandantongjisqlserveryonghushujubiaodaxiao_666.html</link>
		<comments>http://www.liangpeng.net/y2009/m06/jiandantongjisqlserveryonghushujubiaodaxiao_666.html#comments</comments>
		<pubDate>Mon, 01 Jun 2009 11:39:05 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[SQL SERVER]]></category>
		<category><![CDATA[统计]]></category>
		<category><![CDATA[表大小]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=666</guid>
		<description><![CDATA[在SQL Server，简单的组合sp_spaceused和sp_MSforeachtable这两个存储过程，可以方便的统计出用户数据表的大小，包括记录总数和空间占用情况，非常实用，在SqlServer2K和SqlServer2005中都测试通过。 /**//* ... ]]></description>
			<content:encoded><![CDATA[<p>在SQL Server，简单的组合sp_spaceused和sp_MSforeachtable这两个存储过程，可以方便的<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e7%bb%9f%e8%ae%a1" title="查看 统计 的全部文章" target="_blank">统计</a></span>出用户数据表的大小，包括记录总数和空间占用情况，非常实用，在SqlServer2K和SqlServer2005中都测试通过。</p>
<table border="0" cellspacing="0" cellpadding="6" width="95%" align="center">
<tbody>
<tr>
<td bgcolor="#f3f3f3"><span style="font-family: Verdana;">/**//*<br />
1. exec sp_spaceused &#8216;表名&#8217;            （SQL<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e7%bb%9f%e8%ae%a1" title="查看 统计 的全部文章" target="_blank">统计</a></span>数据，大量事务操作后可能不准）<br />
2. exec sp_spaceused &#8216;表名&#8217;, true       (更新表的空间大小，准确的表空大小，但可能会花些<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e7%bb%9f%e8%ae%a1" title="查看 统计 的全部文章" target="_blank">统计</a></span>时间）<br />
3. exec sp_spaceused                    (数据库大小查询）<br />
4. exec sp_MSforeachtable &#8220;exec sp_spaceused &#8216;?&#8217;&#8221;     (所有用户表空间表小，SQL统计数据，，大量事务操作后可能不准）<br />
5. exec sp_MSforeachtable &#8220;exec sp_spaceused &#8216;?&#8217;,true&#8221;    (所有用户表空间表小，大数据库慎用）<br />
*/</span><span style="font-family: Verdana;">create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20))<br />
exec sp_MSforeachtable &#8220;insert into #t exec sp_spaceused &#8216;?&#8217;&#8221;<br />
select * from #t<br />
drop table #t</span></td>
</tr>
</tbody>
</table>
<p>另外还有sp_MSforeachdb可以遍历所有数据库，使用方法详见SQL帮助。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m05/gaodingdaliangshujucharusqlservermuqiandadaomeimiao2000tiao_639.html" title="搞定大量数据插入SQL SERVER,测试最快可达1万(日志设为简单)">搞定大量数据插入SQL SERVER,测试最快可达1万(日志设为简单)</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m06/jiandantongjisqlserveryonghushujubiaodaxiao_666.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sybase数据库维护</title>
		<link>http://www.liangpeng.net/y2009/m06/sybaseshujukuweihu_663.html</link>
		<comments>http://www.liangpeng.net/y2009/m06/sybaseshujukuweihu_663.html#comments</comments>
		<pubDate>Mon, 01 Jun 2009 03:06:04 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[sybase]]></category>
		<category><![CDATA[常用命令]]></category>
		<category><![CDATA[数据库维护]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=663</guid>
		<description><![CDATA[一、从命令行里进入数据库 依次打开“开始”—&#62;“运行”，在运行对话框里输入cmd,打开“命令提示符”窗口, 在“&#62;”后面输入下面兰色的语句。 C:\Documents and Settings\hhy&#62; isql -Usa -Shrms -... ]]></description>
			<content:encoded><![CDATA[<p>一、从命令行里进入数据库<br />
依次打开“开始”—&gt;“运行”，在运行对话框里输入cmd,打开“命令提示符”窗口,<br />
在“&gt;”后面输入下面兰色的语句。<br />
C:\Documents and Settings\hhy&gt; isql -Usa -Shrms -Jcp936<br />
Password:<br />
注意：-U 后为登陆数据库使用的用户名<br />
-S 后为所登陆数据库服务的名称<br />
-J 后为所登陆数据库使用的字符集<br />
二、列出现有数据库极其大小<br />
将数据库服务器里的全部的数据库列表出来，使用下面语句。<br />
1&gt; sp_helpdb<br />
2&gt; go<br />
name                     db_size       owner                    dbid<br />
created<br />
status<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
hrms                         1100.0 MB sa                            4<br />
May 13, 2006<br />
no options set<br />
master                         48.0 MB sa                            1<br />
May 13, 2006<br />
mixed log and data<br />
model                          16.0 MB sa                            3<br />
May 13, 2006<br />
mixed log and data<br />
sybsystemdb                    20.0 MB sa                        31513<br />
May 13, 2006<br />
trunc log on chkpt, mixed log and data<br />
sybsystemprocs                120.0 MB sa                        31514<br />
May 13, 2006<br />
trunc log on chkpt, mixed log and data<br />
tempdb                       1416.0 MB sa                            2<br />
May 18, 2006<br />
select into/bulkcopy/pllsort, trunc log on chkpt, mixed log and data<br />
(1 row affected)<br />
(return status = 0)<br />
三、创建数据库设备，并且指定数据设备和日志设备的大小。<br />
disk init name =‘你要取的逻辑名&#8217;,<br />
physname = &#8216;你要存放的物理路径及设备名&#8217;,size = &#8216;大小M&#8217;  ○1建立数据设备并指定大小，语句如下<br />
1&gt; disk init name=&#8217;hhydata&#8217;, physname=&#8217;c:\hhyyhhdata.dev&#8217;, size=&#8217;100M&#8217;<br />
2&gt; go<br />
○2建立日志设备并指定大小，语句如下<br />
1&gt; disk init name=&#8217;hhylog&#8217;, physname=&#8217;c:\hhyyhhlog.dev&#8217;, size=&#8217;100M&#8217;<br />
2&gt; go<br />
四、创建指定的数据库，指定数据和日志的大小。<br />
创建新的数据库的时候，分别指定数据设备和日志设备，<br />
create database 数据库名  on 数据设备逻辑名=　&#8217;大小M&#8217;<br />
log on 日志设备逻辑名=  &#8216;大小M&#8217;  语句如下：<br />
1&gt; create database hhyyhh2002 on hhydata=&#8217;80M&#8217; log on hhylog=&#8217;80M&#8217;<br />
2&gt;  go<br />
CREATE DATABASE: allocating 5120 logical pages (80.0 megabytes) on disk<br />
&#8216;hhydata&#8217;.<br />
CREATE DATABASE: allocating 5120 logical pages (80.0 megabytes) on disk<br />
&#8216;hhylog&#8217;.<br />
五、把数据库设备设置为缺省设备<br />
○1数据设备<br />
1&gt;	sp_diskdefault  hrmsdata,defaulton<br />
2&gt;	go<br />
○2日志设备<br />
1&gt;	sp_diskdefault  hrmslog,defaulton<br />
2&gt;	go<br />
五．中文字符集CP936的安装</p>
<p>1.     JDBC连接串要有字符集设置<br />
jdbc:<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/sybase" title="查看 sybase 的全部文章" target="_blank">sybase</a></span>:Tds:192.168.3.11:5000/Wfis_db?charset=cp936</p>
<p>2.     服务器配置成cp936<br />
(1)    使用isql查看当前已经安装的字符集<br />
isql -Usa -Plongtop<br />
&gt;use master<br />
&gt;go<br />
&gt;select id,name from syscharsets<br />
&gt;go<br />
id name<br />
&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;-<br />
0 ascii_8<br />
1 iso_1<br />
2 cp850<br />
20 defaultml<br />
21 thaidict<br />
22 iso14651<br />
24 utf8bin<br />
25 binary<br />
39 altnoacc<br />
45 altdict<br />
46 altnocsp<br />
47 scandict<br />
48 scannocp<br />
50 bin_iso_1<br />
50 bin_cp850<br />
51 dict<br />
52 nocase<br />
53 nocasep<br />
54 noaccent<br />
55 espdict<br />
56 espnocs<br />
57 espnoac<br />
59 rusnocs<br />
64 cyrnocs<br />
65 elldict<br />
69 hundict<br />
70 hunnoac<br />
71 hunnocs<br />
73 turknoac<br />
74 turknocs<br />
129 cp932bin<br />
130 dynix<br />
137 gb2312bn<br />
140 cyrdict<br />
155 turdict<br />
161 euckscbn<br />
163 gbpinyin<br />
165 rusdict<br />
179 sjisbin<br />
192 eucjisbn<br />
194 big5bin</p>
<p>(41 rows affected)<br />
从列表中看出没有安装cp936字符集</p>
<p>(2)    查看当前使用的缺省字符集<br />
&gt;sp_configure &#8220;default char&#8221;<br />
&gt;go<br />
Parameter Name                 Default     Memory Used Config Value<br />
Run Value   Unit                 Type<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;<br />
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;-<br />
default character set id                 2           0           2<br />
2 id                   static</p>
<p>缺省字符集的id是2，查看上面的列表，可以得知是cp850</p>
<p>(3)    因为上面的列表中没有安装cp936，所以就安装cp936字符集<br />
进入目录C:\<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/sybase" title="查看 sybase 的全部文章" target="_blank">sybase</a></span>\charsets\cp936<br />
运行命令 charset -Usa –P  binary.srt cp936</p>
<p>操作如下，红色为要输入的内容。<br />
C:\&gt;cd s*<br />
C:\<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/sybase" title="查看 sybase 的全部文章" target="_blank">sybase</a></span>&gt;cd char*<br />
C:\sybase\charsets&gt;cd cp936<br />
C:\sybase\charsets\cp936&gt;charset -Usa -P binary.srt cp936</p>
<p>Loading file &#8216;binary.srt&#8217;.<br />
Found a [sortorder] section.<br />
This is Class-1 sort order.<br />
Finished loading the Character Set Definition.<br />
Finished loading file &#8216;binary.srt&#8217;.<br />
1 sort order loaded successfully</p>
<p>C:\sybase\charsets\cp936&gt;</p>
<p>运行完成后，系统就安装了cp936字符集</p>
<p>(4)    验证是否确实安装了cp936字符集<br />
C:\sybase\charsets\cp936&gt;isql -Usa -P<br />
1&gt;use master<br />
2&gt;go</p>
<p>1&gt;select id, name from syscharsets<br />
2&gt;go<br />
id name<br />
&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
0 ascii_8<br />
1 iso_1<br />
2 cp850<br />
20 defaultml<br />
21 thaidict<br />
22 iso14651<br />
24 utf8bin<br />
25 binary<br />
39 altnoacc<br />
45 altdict<br />
46 altnocsp<br />
47 scandict<br />
48 scannocp<br />
50 bin_iso_1<br />
50 bin_cp850<br />
50 bin_cp936<br />
51 dict<br />
52 nocase<br />
53 nocasep<br />
54 noaccent<br />
55 espdict<br />
56 espnocs<br />
57 espnoac<br />
59 rusnocs<br />
64 cyrnocs<br />
65 elldict<br />
69 hundict<br />
70 hunnoac<br />
71 hunnocs<br />
73 turknoac<br />
74 turknocs<br />
129 cp932bin<br />
130 dynix<br />
137 gb2312bn<br />
140 cyrdict<br />
155 turdict<br />
161 euckscbn<br />
163 gbpinyin<br />
165 rusdict<br />
171 cp936<br />
179 sjisbin<br />
192 eucjisbn<br />
194 big5bin</p>
<p>(43 rows affected)<br />
从列表中可以发现已经安装了cp936，id是171</p>
<p>(5)    把系统的当前缺省字符集设置为cp936<br />
1&gt;sp_configure &#8220;default char&#8221;, 171<br />
2&gt;go<br />
In changing the default sort order, you have also reconfigured SQL Server&#8217;s<br />
default character set.<br />
Parameter Name                 Default     Memory Used Config Value<br />
Run Value   Unit                 Type<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;<br />
&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;-<br />
default character set id                 2           0         171<br />
2 id                   static</p>
<p>(1 row affected)<br />
Configuration option changed. Since the option is static, Adaptive Server must<br />
be rebooted in order for the change to take effect.<br />
Changing the value of &#8216;default character set id&#8217; to &#8217;171&#8242; increases the amount<br />
of memory ASE uses by 6 K.<br />
(return status = 0)</p>
<p>(6)    重启Sybase服务，使更改生效<br />
第一次重启，系统会对已经存在的数据进行转换，转换完成后自动停止服务，只要再次启动服务就可以了。</p>
<p>补充：<br />
在isql状态下查看原来数据库字符集使用情况，服务器和客户端的都要查看，方法是：</p>
<p>一、获得服务器端的字符集情况：<br />
1&gt;sp_helpsort<br />
2&gt;go<br />
输出结果为：<br />
Character Set = 2, cp850<br />
Code Page 850 (Multilingual) character set.<br />
Sort Order = 50, bin_cp850<br />
Binary Sort Order for Code Page 850 (cp850).</p>
<p>二、获得客户端字符集情况：<br />
1&gt;select @@client_csname<br />
2&gt;go<br />
输出结果应为：iso_1<br />
说明：很多时候应用程序报错，客户端和服务器端字符集不相匹配。</p>
<p>三、修改客户端缺省字符集文件c:\sybase\locales\locales.dat文件，首先找到[NT]操作系统分组，然后定位到该分组最后一行“local = default, us_english, iso_1”，将其修改为：“local = default, us_english, cp936”。 参考上面步骤，再次确认服务器端和客户端字符集均已修改正确。</p>
<p>(7)    更改DB客户端的字符集<br />
DBArtisan中要更改客户端的字符集为cp936才能连接cp936的服务器<br />
通过菜单\Logfile\Options&#8230;打开对话框，选择Connection标签，<br />
更改Client Character输入框的值为cp936。</p>
<p>数据库的charset修改为cp936时,使用isql按如下的方式<br />
isql -Usa -Plongtop -Sdbserver -Jcp936</p>
<p>六、Sybase客户端会话数量的更改<br />
SyBase的会话数量默认为25个，在人力资源系统中远远不够，需要调整数量为1000。调整命令如下：<br />
1&gt;sp_configure “number of user”, 1000<br />
2&gt;go<br />
	其他配置<br />
1、临时表：临时表的默认配置在人力资源系统中不足于运行，需至少增加10个G的数据库设备到tempdb之上，否则一旦执行大数据量的分页存储过程时，将会抛出临时表空间分配不足的异常。关于建立数据库设备，可参见附件《快速维护手册V2.0.doc》<br />
六、从指定位置导入备份数据到指定的数据库<br />
1&gt; load database hhyyhh2002 from &#8220;d:\ hrms060513.bak&#8221;<br />
2&gt; go<br />
Backup Server session id is:  10.  Use this value when executing the<br />
&#8216;sp_volchanged&#8217; system stored procedure after fulfilling any volume change<br />
request from the Backup Server.<br />
Backup Server: 6.28.1.1: Dumpfile name &#8216;hrmis06138082CE  &#8216; section number 1<br />
mounted on disk file &#8216;d:\hrmis060518.bak&#8217;<br />
Backup Server: 4.58.1.1: Database hrms: 34980 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 82726 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 118152 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 176714 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 207308 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 241934 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 268624 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 303250 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 329940 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 360550 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 391256 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 417898 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 452572 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 487838 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 510560 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 770098 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 1019940 kilobytes LOADed.<br />
Backup Server: 4.58.1.1: Database hrms: 1019962 kilobytes LOADed.<br />
Backup Server: 3.42.1.1: LOAD is complete (database hrms).<br />
Caution:  You have set up this database to include space on disk 3 for both dat<br />
and the transaction log.  This can make recovery impossible if that disk fails.<br />
All dumped pages have been loaded.  SQL Server is now clearing pages above page<br />
63744, which were not present in the database just loaded.<br />
SQL Server has finished clearing database pages.<br />
Started estimating recovery log boundaries for database &#8216;hrms&#8217;.<br />
Database &#8216;hrms&#8217;, checkpoint=(38143, 191), first=(38143, 191), last=(38143,<br />
232).<br />
Completed estimating recovery log boundaries for database &#8216;hrms&#8217;.<br />
Started ANALYSIS pass for database &#8216;hrms&#8217;.<br />
Completed ANALYSIS pass for database &#8216;hrms&#8217;.<br />
Started REDO pass for database &#8216;hrms&#8217;. The total number of log records to<br />
process is 42.<br />
Redo pass of recovery has processed 3 committed and 16 aborted transactions.<br />
Completed REDO pass for database &#8216;hrms&#8217;.<br />
Use the ONLINE DATABASE command to bring this database online; SQL Server will<br />
not bring it online automatically.</p>
<p>七、使当前数据库,（使当前数据库在线）执行如下语句：<br />
1&gt; online database hrms<br />
2&gt; go<br />
Started estimating recovery log boundaries for database &#8216;hrms&#8217;.<br />
Database &#8216;hrms&#8217;, checkpoint=(38143, 191), first=(38143, 191), last=(38143,<br />
232).<br />
Completed estimating recovery log boundaries for database &#8216;hrms&#8217;.<br />
Started ANALYSIS pass for database &#8216;hrms&#8217;.<br />
Completed ANALYSIS pass for database &#8216;hrms&#8217;.<br />
Recovery of database &#8216;hrms&#8217; will undo incomplete nested top actions.<br />
Database &#8216;hrms&#8217; is now online.<br />
八\为当前数据库服务器设置可用的最大用户连接数<br />
1&gt; sp_configure “number of user connections”, 100<br />
2&gt; go<br />
九、导出当前数据库数据并备份到指定位置。<br />
1&gt; dump database hrms to ’c:\20060525.bak’<br />
2&gt; go<br />
十、清除指定的数据库<br />
执行下列语句，清除hrms数据库。<br />
1&gt; drop database hrms<br />
2&gt; go<br />
十一、列表所有的数据库设备<br />
1&gt; sp_helpdevice<br />
2&gt; go<br />
device_name                    physical_name<br />
description</p>
<p>status cntrltype device_number<br />
low</p>
<p>high</p>
<p>&#8212;&#8212;&#8212;<br />
hhydata                        c:\hhyyhhdata.dev<br />
special, dsync on, default disk, physical disk, 1100.00 MB</p>
<p>16387         0             7</p>
<p>117440512</p>
<p>118003711<br />
hhylog                         c:\hhyyhhlog.dev<br />
special, dsync on, default disk, physical disk, 1100.00 MB</p>
<p>16387         0             8</p>
<p>134217728</p>
<p>134780927<br />
hrmsdata                       e:\sybasedevice\hrmsdata.dat<br />
special, dsync on, default disk, physical disk, 1000.00 MB</p>
<p>16387         0             3<br />
50331648</p>
<p>50843647<br />
hrmslog                        e:\sybasedevice\hrmslog.dat<br />
special, dsync on, default disk, physical disk, 400.00 MB</p>
<p>16387         0             4<br />
67108864</p>
<p>67313663<br />
十二、清除指定的数据设备<br />
○1数据设备<br />
1&gt; sp_dropdevice hrmsdata<br />
2&gt; go<br />
○2日志设备<br />
1&gt; drop datadevice hrmslog<br />
2&gt; go<br />
十三、导出（导入）数据库中全部用户表的数据<br />
bcp命令一次只可以把一个表的数据导出来。要把所有表数据导出，可生成一个包含多行bcp命令的批处理文件，其中的每行bcp命令导出一个表。<br />
1、编辑一个文本文件select.sql，内容如下：<br />
set nocount on<br />
use pubs2<br />
go<br />
select &#8220;bcp pubs2..&#8221; + name + &#8221; out &#8221; + name + &#8220;.bcp -Usa -P -c &#8221;<br />
from sysobjects where type=&#8221;U&#8221;<br />
go<br />
2、如果是unix环境， 执行：<br />
isql  -Usa   -P  -b -i select.sql  -o bcpout<br />
chmod  +x   bcpout<br />
3、如果是Windows, 执行：<br />
isql  -Usa   -P  -b -i select.sql  -o bcpout.bat<br />
4、把bcpout中out换为in即可得到bcpin的批处理命令文件<br />
十四、在Windows 平台上启动和关闭Sybase数据库服务器？<br />
1.使用Sybase工具：Sybase Central<br />
打开Sybase Central&#8211;&gt;找到所需要启动的Sybase数据库服务器的名称&#8211;&gt;鼠标右键单击该名称,出现弹出框<br />
启动：&#8211;&gt;单击”start”<br />
关闭：&#8211;&gt;单击”stop”<br />
2.使用Windows操作系统提供的服务管理<br />
打开“Control Panel”中的“Service”&#8211;&gt; 找到所需要启动的Sybase数据库服务器的服务名称&#8211;&gt;鼠标右键单击该名称,出现弹出框<br />
启动：&#8211;&gt;单击”start”<br />
关闭：&#8211;&gt;单击”stop”</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2008/m09/vim%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4_238.html" title="VIM常用命令">VIM常用命令</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m06/sybaseshujukuweihu_663.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql的查询日志</title>
		<link>http://www.liangpeng.net/y2009/m05/mysqldechaxunrizhi_643.html</link>
		<comments>http://www.liangpeng.net/y2009/m05/mysqldechaxunrizhi_643.html#comments</comments>
		<pubDate>Thu, 28 May 2009 12:00:17 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[Linux应用]]></category>
		<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[查询日志]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=643</guid>
		<description><![CDATA[今天发现服务器挂了,吓了一跳,登录上去看看,发现磁盘空间用完了,晕,立即删除web日志,居然还是没空间,进一步查看,发现mysql占用空间巨大,其中一个localhost.log居然3.3G,删除之,晕,df还是没有空间(... ]]></description>
			<content:encoded><![CDATA[<p>今天发现服务器挂了,吓了一跳,登录上去看看,发现磁盘空间用完了,晕,立即删除web日志,居然还是没空间,进一步查看,发现<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>占用空间巨大,其中一个localhost.log居然3.3G,删除之,晕,df还是没有空间(目前还不知道为什么不立即体现),无奈reboot,发现有空间了..<br />
随查看<strong>localhost.log</strong>的内容,发现是<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/mysql" title="查看 mysql 的全部文章" target="_blank">mysql</a></span>的查询语句,10多天都能搞出来3G,还不错嘛,查询的挺厉害,但是目前对我没什么用,就到网上寻找关闭之的方法,看来还真是很少人用这东西,居然没有一个能给个正确答案的(难道都用&#8211;without-debug编译的?),经过不懈努力终于找到一个网址, http://dev.mysql.com/doc/refman/5.1/en/server-logs.html 虽然是英文,还是容易看懂的,最后发现可以使用 SET GLOBAL general_log = &#8216;OFF&#8217; 将其关闭,当做一个SQL语句执行即可,哈哈,原来这么爽,想开就开,想关就关&#8230;效果好的很呀..<br />
通过查询而且还发现可以仅仅过滤显示查询时间过长的SQL语句,欧也,这样可以发现数据库杀手了,不错.很好很强大..</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2010/m06/mysqlhuoqusuijishujudewenti_1212.html" title="mysql获取随机数据的问题，很纳闷">mysql获取随机数据的问题，很纳闷</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m06/jieshaomysqlshujukuxiashowminglingdezhuyaoyongfa_696.html" title="介绍mysql数据库下show命令的主要用法">介绍mysql数据库下show命令的主要用法</a> (0)</li><li><a href="http://www.liangpeng.net/y2008/m09/%e5%9c%a8-ubuntu-%e4%b8%8a%e6%90%ad%e5%bb%ba-l2mp-%e6%9c%8d%e5%8a%a1%e5%99%a8_322.html" title="在 Ubuntu 上搭建 L2MP 服务器">在 Ubuntu 上搭建 L2MP 服务器</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m05/mysqldechaxunrizhi_643.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>搞定大量数据插入SQL SERVER,测试最快可达1万(日志设为简单)</title>
		<link>http://www.liangpeng.net/y2009/m05/gaodingdaliangshujucharusqlservermuqiandadaomeimiao2000tiao_639.html</link>
		<comments>http://www.liangpeng.net/y2009/m05/gaodingdaliangshujucharusqlservermuqiandadaomeimiao2000tiao_639.html#comments</comments>
		<pubDate>Tue, 26 May 2009 09:24:45 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[SQL SERVER]]></category>
		<category><![CDATA[事务]]></category>
		<category><![CDATA[数据插入]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=639</guid>
		<description><![CDATA[终于搞定了中继的数据采集，本以为一天搞定的事情，足足让我搞了3天有余，部分时间是被其他事情耽搁了，主要原因是以前使用的插入数据库数据的方式有问题。 之前，按照一个大哥的说法... ]]></description>
			<content:encoded><![CDATA[<p>终于搞定了中继的数据采集，本以为一天搞定的事情，足足让我搞了3天有余，部分时间是被其他事情耽搁了，主要原因是以前使用的插入数据库数据的方式有问题。</p>
<p>之前，按照一个大哥的说法，使用存储过程操作数据表，可能会防止数据表死锁的问题，所以，所有的数据操作全部封装为存储过程来进行处理，包括：数据对象的insert操作，小数量数据的时候，也没有多大感觉，但是现在插入的中继信息居然达到了300万的数量，按照原来的方法，每秒大概只能插入200数据，总用时15000秒，我靠，半天时间玩完了，多线程插入也没用，速度差不对。</p>
<p>无解，只能想办法提高采集速度，先把程序处理逻辑进行调整，还是没有多大提高，毕竟<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e6%95%b0%e6%8d%ae%e6%8f%92%e5%85%a5" title="查看 数据插入 的全部文章" target="_blank">数据插入</a></span>太慢了，只得想办法提高<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e6%95%b0%e6%8d%ae%e6%8f%92%e5%85%a5" title="查看 数据插入 的全部文章" target="_blank">数据插入</a></span>的操作，经过了解发现原因是，每次存储过程会自动完成一个<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%ba%8b%e5%8a%a1" title="查看 事务 的全部文章" target="_blank">事务</a></span>操作，而每个事物要进行日志的写入，估计还有效验等工作，简单的做法就是将多个插入SQL语句组合在一个数据中，减少对日志的操作，发现效率提高的不错，基本能达到1800条每秒。</p>
<p>具体做法：</p>
<p>1.如果不是必须，把数据库的恢复模式改为“简单”</p>
<p>2.使用如下的方式插入数据：最好直接作为一条SQL语句直接执行，但是不要写太多条进去，貌似有人说大于1000了，应该有慢下来的，我每次插入20性能已经相当不错，所以就先这样把任务完成先，以后再研究最好的方法。</p>
<p>BEGIN TRANSACTION<br />
INSERT &#8230;<br />
INSERT &#8230;<br />
INSERT &#8230;<br />
COMMIT  TRANSACTION</p>
<p>具体实现方法比较：</p>
<ol>
<li>将一次要提交的SQL语句，无论多少条Insert全部组合成为一条SQL语句，以BEGIN TRAN;开始，以COMMIT TRAN;结束。这样的操作速度最快可达1万/秒。</li>
<li>跟上面方法一致，但是每条SQL语句执行一次ExecSQL，第一次ExecSQL(&#8216;BEGIN TRAN&#8217;),最后ExecSQL(&#8216;Commit TRAN&#8217;),这样操作数据一般，性能提高微弱，目前我测试效率为1500条/秒左右。</li>
</ol>
<p>附加心得：</p>
<ol>
<li>对于Delphi程序员，有一个严重提醒，不要使用SQL.add();方法进行sql生成，如果第一种方法使用sql.add组合出来一个大的SQL语句，实际上比执行插入操作都慢，导致系统瓶颈，尤其是一条长的SQL语句，多次add，性能之差，不可想象。还是使用String来进行拼接，之后赋值给sql.text为好。</li>
<li>如果使用上面第二种方法，在没有“COMMIT TRAN”，插入一个存储过程的执行，不影响整体事物。（我的程序执行<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e6%95%b0%e6%8d%ae%e6%8f%92%e5%85%a5" title="查看 数据插入 的全部文章" target="_blank">数据插入</a></span>时候是批量调用对象的Insert方法，因为有很多对象类型不同，其Insert方法也不同，所以需要对此进行测试，发现这样做不影响数据插入）</li>
</ol>
<p>就是这么简单。哈哈。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m06/jiandantongjisqlserveryonghushujubiaodaxiao_666.html" title="简单统计SQLServer用户数据表大小">简单统计SQLServer用户数据表大小</a> (0)</li><li><a href="http://www.liangpeng.net/y2009/m05/sqlserverdaliangshujucharudezongjie_631.html" title="sql server大量数据插入的总结">sql server大量数据插入的总结</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m05/gaodingdaliangshujucharusqlservermuqiandadaomeimiao2000tiao_639.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sql server大量数据插入的总结</title>
		<link>http://www.liangpeng.net/y2009/m05/sqlserverdaliangshujucharudezongjie_631.html</link>
		<comments>http://www.liangpeng.net/y2009/m05/sqlserverdaliangshujucharudezongjie_631.html#comments</comments>
		<pubDate>Mon, 25 May 2009 12:57:43 +0000</pubDate>
		<dc:creator>梁鹏</dc:creator>
				<category><![CDATA[数据库技术]]></category>
		<category><![CDATA[sql server数据插入]]></category>
		<category><![CDATA[事务]]></category>

		<guid isPermaLink="false">http://www.liangpeng.net/?p=631</guid>
		<description><![CDATA[简单的优化方法： 1.将数据库恢复模式改为简单，基本能提高一倍速度。 自己测试获得的结果： 1.使用SET IMPLICIT_TRANSACTIONS ON可以强制进行事务提交，不执行Commit不能提交数据 2.如果使用存储过... ]]></description>
			<content:encoded><![CDATA[<p>简单的优化方法：<br />
1.将数据库恢复模式改为简单，基本能提高一倍速度。<br />
自己测试获得的结果：<br />
1.使用SET IMPLICIT_TRANSACTIONS ON可以强制进行<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%ba%8b%e5%8a%a1" title="查看 事务 的全部文章" target="_blank">事务</a></span>提交，不执行Commit不能提交数据</p>
<p>2.如果使用存储过程插入数据，上面的命令无效，每秒大概1350条（20万大概2.5分钟）</p>
<p>3.使用delphi+ado+存储过程插入数据大概速度是每秒1350条左右，使用第一种能够提高到3000左右（20万1分14），是偶自己的测试。</p>
<p>4.使用查询管理器执行存储过程，大概3200条左右，比上秒稍快。</p>
<p>5.使用第一种方法，数据插入过程中，会造成锁表导致其他数据操作不能进行。</p>
<p>6.使用第一种方法，直接在Sql server查询管理器，可以达到20000条的速度</p>
<p>7.按照6方法执行过后，会影响之后4的速度，使4的速度提高到6低点的水平，不知道为什么。</p>
<p>测试不太精确，大概意思可以得到，如果强制使用<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%ba%8b%e5%8a%a1" title="查看 事务 的全部文章" target="_blank">事务</a></span>提交，可以增加插入速度2倍多，但是<span class='wp_keywordlink_affiliate'><a href="http://www.liangpeng.net/ytag/%e4%ba%8b%e5%8a%a1" title="查看 事务 的全部文章" target="_blank">事务</a></span>处理过程中，会锁表，影响其他线程数据插入，对于多线程有些问题。</p>
<p>偶也不是DBA，所以只能做些粗略的测试，看起来偶的程序，主要瓶颈不是在与数据存储（尚未测试多线程插入是不是会更慢）。</p>
<p><coolcode>select getdate()<br />
DECLARE	@i	int,@return_value int,@ReturnValue int<br />
set @i=0<br />
BEGIN TRAN<br />
while(@i&lt;200000)<br />
begin<br />
    INSERT INTO [ZhongJiQun]([FNetWorkName],[FZhongJiQunMing],[FZhongJiQunHao],[FStatus],[FBenDuanXinLingDian],[FDuiDuanXinLingDian],[FJuXiangMing],[FJuXiangHao],[FQiShiCic],[FJieShuCic],[FZhongJiQunFangXiang],[FDianLuTuoPuLeiXing],[FDaiKuan],[FLeiXing],[FVMGW])VALUES(null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)<br />
    set @i=@i+1<br />
end<br />
commit TRAN<br />
select getdate()<br />
select count(*) from zhongjiqun<br />
EXEC	@return_value = [dbo].[proc_cj_Insert_ZhongJiQun]<br />
				@FNetWorkName = &#8216;eee&#8217;,<br />
				@FZhongJiQunMing = &#8216;eee&#8217;,<br />
				@FZhongJiQunHao = &#8216;eee&#8217;,<br />
				@FStatus = &#8216;eee&#8217;,<br />
				@FBenDuanXinLingDian = &#8216;eee&#8217;,<br />
				@FDuiDuanXinLingDian = &#8216;eee&#8217;,<br />
				@FJuXiangMing = &#8216;eee&#8217;,<br />
				@FJuXiangHao = &#8216;eee&#8217;,<br />
				@FQiShiCic = &#8216;eee&#8217;,<br />
				@FJieShuCic = &#8216;eee&#8217;,<br />
				@FZhongJiQunFangXiang = &#8216;eee&#8217;,<br />
				@FDianLuTuoPuLeiXing = &#8216;eee&#8217;,<br />
				@FDaiKuan = &#8216;eee&#8217;,<br />
				@FLeiXing = &#8216;eee&#8217;,<br />
				@FVMGW = &#8216;eee&#8217;,<br />
				@ReturnValue = @ReturnValue OUTPUT</coolcode></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://www.liangpeng.net/y2009/m05/gaodingdaliangshujucharusqlservermuqiandadaomeimiao2000tiao_639.html" title="搞定大量数据插入SQL SERVER,测试最快可达1万(日志设为简单)">搞定大量数据插入SQL SERVER,测试最快可达1万(日志设为简单)</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.liangpeng.net/y2009/m05/sqlserverdaliangshujucharudezongjie_631.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
