国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 高性能寫入的一些總結

2024-08-31 00:55:55
字體:
來源:轉載
供稿:網友
SQL Server 高性能寫入的一些總結 1.1.1 摘要

  在開發過程中,我們不時會遇到系統性能瓶頸問題,而引起這一問題原因可以很多,有可能是代碼不夠高效、有可能是硬件或網絡問題,也有可能是數據庫設計的問題。

  本篇博文將針對一些常用的數據庫性能調休方法進行介紹,而且,為了編寫高效的SQL代碼,我們需要掌握一些基本代碼優化的技巧,所以,我們將從一些基本優化技巧進行介紹。

  本文目錄
  • 代碼中的問題
  • 數據庫性能開銷
  • 使用存儲過程
  • 使用數據庫事務
  • 使用SqlBulkCopy
  • 使用表參數
 1.1.2 正文

  假設,我們要設計一個博客系統,其中包含一個用戶表(User),它用來存儲用戶的賬戶名、密碼、顯示名稱和注冊日期等信息。

  由于時間的關系,我們已經把User表設計好了,它包括賬戶名、密碼(注意:這里沒有考慮隱私信息的加密存儲)、顯示名稱和注冊日期等,具體設計如下:

1234567891011121314151617181920-- =============================================-- Author: JKhuang-- Create date: 7/8/2012-- Description: A table stores the user information.-- =============================================CREATE TABLE [dbo].[jk_users](-- This is the reference to Users table, it is PRimary key.[ID] [bigint] IDENTITY(1,1) NOT NULL,[user_login] [varchar](60) NOT NULL,[user_pass] [varchar](64) NOT NULL,[user_nicename] [varchar](50) NOT NULL,[user_email] [varchar](100) NOT NULL,[user_url] [varchar](100) NOT NULL,-- This field get the default from function GETDATE().[user_registered] [datetime] NOT NULL CONSTRAINT [DF_jk_users_user_registered] DEFAULT (getdate()),[user_activation_key] [varchar](60) NOT NULL,[user_status] [int] NOT NULL CONSTRAINT [DF_jk_users_user_status] DEFAULT ((0)),[display_name] [varchar](250) NOT NULL)

optimization0

圖1 Users表設計

  上面,我們定義了Users表,它包含賬戶名、密碼、顯示名稱和注冊日期等10個字段,其中,ID是一個自增的主鍵,user_resistered用來記錄用戶的注冊時間,它設置了默認值GETDATE()。

  接下來,我們將通過客戶端代碼實現數據存儲到Users表中,具體的代碼如下:

12345678910//// Creates a database connection.var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONN1"].ToString());conn.Open();//// This is a massive SQL injection vulnerability, //// don't ever write your own SQL statements with string formatting!string sql = String.Format( @"INSERT INTO jk_users (user_login, user_pass, user_nicename, user_email, user_status,display_name, user_url, user_activation_key) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')", userLogin, userPass, userNicename, userEmail, userStatus, displayName, userUrl, userActivationKey);var cmd = new SqlCommand(sql, conn);cmd.ExecuteNonQuery();//// Because this call to Close() is not wrapped in a try/catch/finally clause, //// it could be missed if an exception occurs above. Don't do this!conn.Close();
  代碼中的問題

  上面,我們使用再普通不過的ADO.NET方式實現數據寫入功能,但大家是否發現代碼存在問題或可以改進的地方呢?

  首先,我們在客戶端代碼中,創建一個數據庫連接,它需要占用一定的系統資源,當操作完畢之后我們需要釋放占用的系統資源,當然,我們可以手動釋放資源,具體實現如下:

  • 1234567891011//// Creates a database connection.var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONN1"].ToString());conn.Open();//// This is a massive SQL injection vulnerability, //// don't ever write your own SQL statements with string formatting!string sql = String.Format(@"INSERT INTO jk_users (user_login, user_pass, user_nicename, user_email, user_status,display_name, user_url, user_activation_key) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')",userLogin, userPass, userNicename, userEmail, userStatus, displayName, userUrl, userActivationKey);var cmd = new SqlCommand(sql, conn);cmd.ExecuteNonQuery();//// If throws an exception on cmd dispose.cmd.Dispose();//// conn can't be disposed.conn.Close();conn.Di
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 南和县| 阳泉市| 湘西| 固阳县| 岢岚县| 达日县| 龙山县| 黑水县| 莱芜市| 施甸县| 平原县| 黑龙江省| 轮台县| 江永县| 泗洪县| 五河县| 苏尼特右旗| 鹤庆县| 论坛| 九寨沟县| 土默特左旗| 安泽县| 广水市| 台安县| 汕头市| 封开县| 高雄县| 鸡东县| 出国| 大洼县| 苏尼特右旗| 嵊泗县| 梨树县| 都江堰市| 罗田县| 彰化县| 双鸭山市| 安庆市| 汤原县| 丰县| 灯塔市|
    <small id="tcwtt"><tbody id="tcwtt"></tbody></small>

      • <noscript id="tcwtt"></noscript>

        <small id="tcwtt"></small>