Microsoft SQL server性能优化必备工具

这里说的工具并不一定是独立软件

1 查看sql语句执行花费的时间、IO开销

在mssql客户端执行sql语句时,先在当前会话里执行下面语句

SET STATISTICS IO ON
SET STATISTICS TIME ON
也可一次性执行
set statistics io,time on

然后再执行sql语句,运行完成的消息框里将给出如下统计信息

SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。

SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。
SQL Server[......]

继续阅读

mysql对大表执行update速度慢时,试试改用insert可能会有意想不到的发现

实例:需要根据用户日志的ip地址计算出其地理地址

表结构:

用户日志表(200万条记录),其中address是待填充的字段:

CREATE TABLE `tmp_open_ip` (
  `email` varchar(60) NOT NULL DEFAULT '',
  `address` varchar(50) NOT NULL DEFAULT '',
  `ip` int(10) unsigned NOT NULL DEFAULT '0',
  KEY `email` (`email`),
  KEY `ip` (`ip`)
) ENGINE=MyISAM DE[......]

继续阅读

一个集成化的spam list在线查询工具,很全面/垃圾邮件黑名单

集成化的spam list在线查询工具,很全面,以备不时之需。作用就不说了,维护过邮件服务器的都知道

http://www.dnsbl.info/dnsbl-database-check.php

http://multirbl.valli.org/lookup/

http://mailspike.org/iplookup.html

值得参考的资料:

http://liaoen.blog.51cto.com/2253541/872455

 [……]

继续阅读

mysql join查询时,参与join的字段字符集编码不同,对性能影响是巨大的

本文一直以来都只是个标题,在三个月后的今天,熬夜补上内容。

直接上代码:

建utf-8编码的表 t1:

CREATE TABLE IF NOT EXISTS `t1` (
  `name` varchar(50) NOT NULL DEFAULT '',
  KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

随便插入些数据,数量大一点,后面实验结果更清晰,偷个懒,构造随机字符串插入语句

insert into t1(name) 
select concat(
char(round((rand())*2[......]

继续阅读

使用wget抓取网页内容,常规用法及有用参数

环境:linux系统(各种发行版皆可),windows下强烈推荐cygwin环境

常规用法:

  1. 直接下载一个文件,默认按最后一级文件名保存到本地: wget {your-url}
  2. 如需自定义保存文件名则增加参数 -O 指定保留文件路径: wget -O {save-file-name} {your-url}
  3. 下载一批文件,把文件路径放到一个文本文件中,每行一个: wget -i {file-name-of-your-filelist}
  4. 下载一个页面及页面中图片等元素,wget -p {your-url}   ,即增加参数 –page-requisites ([……]

    继续阅读

ms sql server 查看服务器当前的连接会话及会话信息(客户端ip地址,协议,时间,读写情况等)

ms sql server 查看服务器当前的连接会话及会话信息(客户端ip地址,协议,时间,读写情况等)

select * from sys.dm_exec_connections

这实际上是master数据库里的一个系统视图,读出来后有不少字段,如client_net_address, protoco_type, connect_time, num_read, num_write等,很明白,就不多说了。

btw,master数据库里有很多系统视图,如:dm_exec_sessions, dm_fts_memory_pools, dm_os_hosts, dm_os_memory_a[……]

继续阅读

一个使用tar实现对目录作增量备份的bash脚本

一个使用tar实现对目录作增量备份的bash脚本

#!/bin/bash
#program:
#  auto backup the folder $to_backup
#        to $save_to
#  History:
# 2012/11/28  yqf First release

# do NOT change the variable $filename
#  except you REALY know what you are doing exactly
filename=`date +%Y%m%d_%H%M%S`

# sample
# ##w[......]

继续阅读

grub-install安装grub时出错:/boot/grub/stage1 not read correctly.

在U盘上安装grub,之前是fat32的,格式化成exfat再安装grub,U盘设置文件为/dev/sdc4, 挂载于/media/c0f80392-62db-4156-a4f5-c64fc7515795/,但在运行grub-install时却出错了,如下:

[root@fsc feng]# grub-install –root-directory=/media/c0f80392-62db-4156-a4f5-c64fc7515795/ /dev/sdc4
The file /media/c0f80392-62db-4156-a4f5-c64fc7515795//boot/grub/[……]

继续阅读

ms sql在对大表做很慢的更新语句时,应单条处理,而不要一个语句更新多条,以避免锁表而阻塞其它应用的读操作

接到一客户的要求,需要修改其发布过所有文章里的联系方式,于是写sql语句,拿到mssql客户端里直接执行。

起初写的是这种形式的语句
update article set [content]=replace(content,’aaaa’,’bbbb’) where companyid=123
写起来很简单,但是执行时花了3分钟都没有执行完,在执行过程中,网站上对article表访问的页面全部长时间没有响应。于是赶快停掉这个update语句。前面页面马上恢复正常。

分析原因应该是在update时,表被锁定,而阻塞了所有操作。
于是改成
update article set [[……]

继续阅读