• sql 多线程


    1、codeproject上面一个多线程执行sql的库。

         开发中常常要执行一些耗时的数据操作,比如update、insert、bulk insert、index creation,

         若顺序执行,则操作总时间是每个单独sql的时间之和  为了加快速度,采用线程池异步执行的做法,比如要要create 10个表以及加数据,则可以开10个线程去分别执

     codeproject上库源码地址 http://www.codeproject.com/Articles/29356/Asynchronous-T-SQL-Execution-Without-Service-Broke
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlTypes;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using SqlClrLib.Model;
    
    namespace ExampleTransaction
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //开发中常常要执行一些耗时的数据操作,比如update、insert、bulk insert、index creation,
                //若顺序执行,则操作总时间是每个单独sql的时间之和,
                //为了加快速度,引入异步执行的做法,比如要要create 10个表以及加数据,则可以开10个线程去分别执行
            }
    
            [Microsoft.SqlServer.Server.SqlProcedure]
            public static int SaveWarehouseFinalData(Guid fileDefinitionId)
            {
                Console.WriteLine("Start");
                StoredProcedures.Parallel_Declare(new SqlString("Parallel SaveWarehouseFinalData"));
                //Console.WriteLine("Database connection is ... {0}", StoredProcedures.Block.ConnectionString);
                //Console.WriteLine("Max threads count is ... {0}", StoredProcedures.Block.MaxThreads);
                ////ParallelProcedures.Block.IsTransactional = true;
                ////ParallelProcedures.Parallel_UseTransaction("Serializable");
                //依次将存储过程加入到线程池
                StoredProcedures.Parallel_AddSql(new SqlString("usp_WarehouseImportSaveToEAV"), new SqlChars(string.Format("usp_WarehouseImportSaveToEAV '{0}'", fileDefinitionId)));
                StoredProcedures.Parallel_AddSql(new SqlString("usp_WarehouseImportSaveToAdminHistory"), new SqlChars(string.Format("usp_WarehouseImportSaveToAdminHistory '{0}'", fileDefinitionId)));
                StoredProcedures.Parallel_AddSql(new SqlString("usp_WarehouseImportSaveToValResult"), new SqlChars(string.Format("usp_WarehouseImportSaveToValResult '{0}'", fileDefinitionId)));
                //执行save操作(此处用的事务,如果不成功会回滚)
                int failedCount = StoredProcedures.Parallel_Execute();
                //Console.WriteLine("Failed count is ... {0}", failedCount);
                ResultItem[] resultItems = (ResultItem[])StoredProcedures.Parallel_GetExecutionResult();
                foreach (ResultItem r in resultItems)
                {
                    //Console.WriteLine(r.ToString());
                }
                //Console.WriteLine("End...");
               
                return failedCount;
            }
    
        }
    }
  • 相关阅读:
    update 大表
    Lazy Writer&CheckPoint
    SQLServer查看登录名和数据库的用户名的映射
    SQL Server Replication出现的错误:The process could not execute 'sp_replcmds' on 'WASYGSHA02-0186'.
    execute as login 切换上下文
    IOS开发-懒加载延迟加载-图片浏览器实例
    IOS开发-代码创建UI控件并修改控件属性(代码创建UIButton、UILabel)
    IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)
    IOS开发-UI控件的常见属性
    IOS开发-UIView(视图)与UIViewController(视图控制器)
  • 原文地址:https://www.cnblogs.com/xiaochun126/p/5046157.html
Copyright © 2020-2023  润新知