4月 29

最近打算做个新站,采集了了2200多万条数据

因为现在VPS是linux的,所以配套使用的是MYSQL,本来想的就是一次性的工作,单条单条插入就可以了

结果吃饭回来发现才插入了800多万条数据,太慢了

记得以前做SQL的时候可以使用SqlBulkCopy批量插入数据,就找了一个可以针对MySQL的

记录如下

 

通常SQL插入语句是这样写的

INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`)   
    VALUES ('0', 'userid_0', 'content_0', 0);  
INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`)   
    VALUES ('1', 'userid_1', 'content_1', 1);

改写成如下形式

INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`)   
    VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);

这样就可以了.

 

程序改造如下

        //做了分段,每次插入pageSize条数据
        var list = item.Value.ToList();
        int pageSize = 10000;
        int pageTotal = (list.Count % pageSize == 0 ? list.Count / pageSize : list.Count / pageSize + 1);
        for (int pageIndex = 0; pageIndex < pageTotal; pageIndex++)
        {
            var tempList = list.Skip(pageSize * pageIndex).Take(pageSize).ToList<string>();
            NamesDAL.AddNames(tempList, item.Key);
        }

        public static bool AddNames(List<string> infos, string SurnameCode)
        {
            using (IDbConnection connection = new MySqlConnection(Config.ConnectionString))
            {
                StringBuilder sb=new StringBuilder();
                sb.Append("insert into `TB_Names`(`Name`,`SurnameCode`) values"); 
                for (int index = 0; index < infos.Count; index++)
                {
                    sb.AppendFormat("('{0}','{1}'){2}", infos[index],  SurnameCode, (index == infos.Count - 1) ? "" : ",");
                }

                var result = connection.Execute(sb.ToString());
                return result > 0;
            }
        }

当然,单条SQL语句是有上限的,MySQL里面可以使用如下语句查看

show VARIABLES like '%max_allowed_packet%';

更改大小是在 my.ini的[mysqld]段就行配置

max_allowed_packet = 20M

 

written by ocean \\ tags:

4月 03

申请证书

Use this Web site to request a certificate for your Web browser, e-mail client, or other program. By using a certificate, you can verify your identity to people you communicate with over the Web, sign and encrypt messages, and, depending upon the type of certificate you request, perform other security tasks.

You can also use this Web site to download a certificate authority (CA) certificate, certificate chain, or certificate revocation list (CRL), or to view the status of a pending request.

For more information about Active Directory Certificate Services, see Active Directory Certificate Services Documentation.

Select a task:
Request a certificate
View the status of a pending certificate request
Download a CA certificate, certificate chain, or CRL

选择

written by ocean

4月 02

使用 VS2013  在调试网站的时候,看了一下源代码,发现了这么一段代码

<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
    {"appName":"Firefox","requestId":"e74e74b3c77041d685dc66d26a184efa"}
</script>
<script type="text/javascript" src="http://localhost:20041/aa09b20def2a47ab9f6a4f0378714eb8/browserLink" async="async"></script>
<!-- End Browser Link -->

这肯定不是我自己加的呀,搜了一下原来这个是vs2013带的新功能 Broswer Link

作用摘抄如下

Browser Link是连接VS和浏览器之间的通道。有了这个特性,web程序就能够和VS交互传递数据。这个特性在VS2013中是默认开启的。当开启了Browser Link, web程序运行的时候,就会注册一个HttpModule到asp.net的生命周期中,这个HttpModule的功能就是在每个输出的网页中,注入一段script脚本,这段脚本的作用就是负责VS IDE和网页间的通讯。
由于其作用的是注入的js脚本,所以使用这个特性不需要任何浏览器插件,对于任何浏览器都可以。当开启Browser Link功能的时候,VS就像是一个SignalR服务器。
Browser Link适合在多浏览器下调试页面的时候使用,这样就减少了在多浏览器下手动刷新的痛苦。

 

很显然我是用不到这些的

如何关闭Broswer Link

How do I turn off Browser Link?

You can uncheck “Enable Browser Link” and it will be turned off “ Browser Link” for all future requests made.

http://blogs.msdn.com/b/webdev/archive/2013/06/28/browser-link-feature-in-visual-studio-preview-2013.aspx

written by ocean \\ tags: