我正在使用MySQL Administrator和MySQL Workbench来查看我当前的线程和连接,并且查询显示在这些应用程序中,但它太长并且在屏幕上运行.
什么是查看所有查询的简单方法,无论它们有多长?我可以运行一个简单的SQL语句吗?
我有一个问题,并希望有人可以帮助我.
我的问题是每当我在"MainFile"中运行代码时,它会输出它添加了条目的两个ID,但是当我查看我的数据库时,我有六个条目而不是两个...有人可以告诉我为什么它可能会这样做?
注意:我只提供了类中代码的片段,因为提供完整的类将是太多的代码.这是唯一可以执行的代码.
编辑史上的代码
编辑:我已经在这篇文章的底部添加了一个调试日志,验证我只为每个查询执行一次SQL代码.
编辑:我不再使用序列化方法,因为存储此类数据显然不是一个好主意.但是,即使我的新代码将每个单独的值存储在数据库中,我仍然会得到三个条目而不是一个条目.所以,这是同一个问题.什么?
编辑:经过几天的调试后,我已将其缩小到导致问题的这一行
Throwlite::$systemSQL->executeSql("INSERT into ".SQL_COMMENTTHREADS_TABLE." (id, sort_order) values (DEFAULT, '2')");
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看LiteSQL类以供参考:http://pastebin.com/a4C6fF4u
另外,作为参考,以下是用于创建表的代码:
"CREATE TABLE IF NOT EXISTS `" . SQL_COMMENTTHREADS_TABLE . "` (`id` int unsigned NOT NULL AUTO_INCREMENT, `sort_order` int NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;"
Run Code Online (Sandbox Code Playgroud)
而且,即使我非常确定它应该没关系,这里是定义SQL_COMMENTTHREADS_TABLE的地方.
define( 'SQL_COMMENTTHREADS_TABLE', "tl_comment_threads");
Run Code Online (Sandbox Code Playgroud) 在postgresql中,我为一个大表添加了一个索引,花了大约1秒钟(坦率地说,让我感到惊讶).
当我去掉索引时,我让它运行> 200秒而不返回,最后取消了放下操作.
CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);
Run Code Online (Sandbox Code Playgroud)
花很少的时间,但是
DROP INDEX idx_cservicelocationdivisionstatus_inversed;
Run Code Online (Sandbox Code Playgroud)
花了这么长时间才放弃并取消了.
该表cservicelocationdivisionstatus有6列和大约310k行数据.
为什么删除索引所需的时间比创建索引要长得多?
编辑:此页面指示对于mySql,具有多个索引的表将复制表并重新插入所有行而不删除您正在删除的索引.(更糟糕的是,使用mySql,如果你在同一个表上删除多个索引,它将为你要删除的每个索引重新复制一次表,而不是聪明并重新复制数据一次而不是所有的索引你是这样的事情会发生在postgres吗?
在我之前的工作中,我设计并帮助构建了一个运行时(生产)Profiler工具,除了其他很酷的功能之外,它还能为每个执行的SQL语句提供.Net堆栈跟踪.将其视为类固醇上的SQL-Server Profiler.因此,您还可以获得SQL执行的上下文,而不仅仅是查看SQL语句和持续时间.在开发以数据库为中心的应用程序时,我发现此信息是上帝发送的.
问题是,由于这是开发的,我以前的公司已被赛门铁克收购,虽然该工具仍可下载,但很不清楚许可是什么,而且不是SKU Symnatec正在销售的.
我想知道是否有人知道任何类似的工具会给我堆栈跟踪我的SQL语句执行?
alt截图http://img151.imageshack.us/img151/4357/profiler1jz3.gif
这仍然没有答案,ANTS等人不这样做,只考虑回答否并接受它.
所以,我试图在实体框架中实现具有多个结果集的存储过程.这一切似乎都太容易了.但是,我没有为我的结果集获取任何行(尽管,似乎我确实得到了结果集).
我做了什么:
我的edmx文件(仅限相关内容):
<FunctionImport Name="getGlobalReport2">
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<Parameter Name="regions" Mode="In" Type="String" />
<Parameter Name="countries" Mode="In" Type="String" />
<Parameter Name="companySizes" Mode="In" Type="String" />
<Parameter Name="products" Mode="In" Type="String" />
</FunctionImport>
<FunctionImportMapping FunctionImportName="getGlobalReport2" FunctionName="MTModel.Store.getGlobalReport2" >
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
</FunctionImportMapping>
Run Code Online (Sandbox Code Playgroud)
我的代码:
var x = mtEntities.getGlobalReport2(regions, countries, companySizes, products);
Response.Write(x.Count());
var y = x.GetNextResult<GlobalReport2>();
Response.Write(y.Count());
var z = x.GetNextResult<GlobalReport2>();
Run Code Online (Sandbox Code Playgroud)
我已经检查了什么:
我跟踪strace命令生成的日志就像运行PHP一样:
sudo strace -e sendto -fp $(pgrep -n php) -o strace.log
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
11208 sendto(4, "set 29170397297_-cache-schema 85 0 127240\r\n\257\202\v\0?\0\0\0\2\27\10stdClass\24\7\21\3cid\21\6schema\21\4d\37ata\25\n\247\21\5block\24\6\21\6fields\24\f\21\3bid\24\2\5\21\4type 0\37erial\21\10not null\5\21\6module\24\4\16\7\21\7va\37rchar\21\6length\6@\16\t\5\21\7default\r\21\5de\2lta@\5\16\v\16\f\6 \35\7\16\r\21\0010\21\5t \207C\30@6\2\16\r\r n\4tatus@0\4\21\3int/\7\6\0\21\4size \222\finy\21\6weight\24\3 ;\0\22\300 \6\6region@8\340\5P\5custom\27\300,\17\16\23\16\24\21\nvisibility\340\t\34\7\5pages\24\2 \205\3\4tex@\206 \261\1it \365\0\5\240\0\377y\10\r\21\ftransl!N\2ble %\1ca!a\340\3Q\0\1n\31\vprimary key\24\1\6\0\16\6\21\vunique@\21\ts\24\1\21\3tmd\24\3 \31\0\20 2\v\n\6\2\16\16\21\7index \210\10\1\21\4list\24\5\240\36\0\21 \36\10\26\6\3\16\25\6\4\16\n \1\6\4\21\4name \7\0\na\317\2_ro\252\0\5!$\0\n \3\341\2\23\0\16\340\0\16A\214\2\21\3r!\354@ \v\22\21\10unsigned\5@\332\0\36\213\0\n \213\0\16 l\6%\16!\24\1\16%\271\0%@p\5\16#\16$\21\f\200l\241b@n\2\4\16\6M\2\10\16&@E\4\21\4bod\201_\5\32\16\t\4\16\23B\\\2g\16\34 \30\3info .\0\7a\255\0\200@q!L\5\6forma\201\332B/!d\2\4\16\37 y\0*y\0 \225a;\240\201\2'\21\van\0_\207\200\2\5\16\1\340\0U =@U\1\16\3@\222 \212\2lob@O\n\23\16)\21\6expire@\30\342\0\26\7\21\7create\241\17< \25\0\n\203\1\"\177\0dY\0\22 \305\5\5small\240!a\32\0.\230\0.\240\240\0\1\240\240\3,\21\vb S\2kpo\"\313\2s\24\6!\220\2\t\21\2\241q\0\10 ?\4\21\tno \213\6ort\5\21\fm\";\3ine_A\313\232\241\3\2\5\16#\340\4\16!\345\340\0U\223\340\0'AC\4sourc\202\202\340\3\27\0\v\200\27\0_C\326\340\0074\1\16\21_\240\363\2\1\16\25\340\3\16\r\0\21\vmultipliers\31\0- \223\1\21\t\341\0\30B-\0\1!\10\0003a\253\0005\v\0005ac \327Dz\"\364 …
我开始知道在使用MySQLi和PDO时预备语句是如何工作的,第一步,我启用了MySQL查询监控,如下所述:我如何查看实时MySQL查询?.然后我创建了以下测试:
使用mysqli:
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username =?")) {
$stmt->bind_param("i", $user);
$user = "''1''";
Run Code Online (Sandbox Code Playgroud)
服务器日志:
Run Code Online (Sandbox Code Playgroud)130802 23:39:39 175 Connect ****@localhost on testdb 175 Prepare SELECT * FROM users WHERE username =? 175 Execute SELECT * FROM users WHERE username =0 175 Quit
使用PDO:
$user = "''1''";
$sql = 'SELECT * FROM user WHERE uid =?';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->bindParam(1, $user, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)
服务器日志:
Run Code Online (Sandbox Code Playgroud)130802 23:41:42 176 Connect ****@localhost on testdb 176 Query SELECT …
我正在一个包含3.5亿行的表上运行alter table语句.我怎么知道这个陈述实际上是在做什么而且没有挂?同样,我不想在它完成之前的某个时刻打扰一个声明.特别是在它运行了几个小时之后.
我需要能够在Bash或PERL中编写脚本,因为我的主机是Redhat Linux机器.本案中的陈述是:
ALTER TABLE table_name AUTO_INCREMENT = 1;
Run Code Online (Sandbox Code Playgroud) mysql ×6
php ×3
sql ×2
.net ×1
c# ×1
concurrency ×1
duplicates ×1
escaping ×1
indexing ×1
mysqli ×1
parsing ×1
pdo ×1
postgresql ×1
profiler ×1
profiling ×1
shell ×1
sql-insert ×1
sql-server ×1
strace ×1