日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

SQL Server數(shù)據(jù)插入性能優(yōu)化:從單條到海量的七種方法對比

SQL Server數(shù)據(jù)插入性能優(yōu)化:從單條到海量的七種方法對比 1. 項目概述為什么我們要關(guān)心SQL Server的插入效率在數(shù)據(jù)庫日常開發(fā)和運維中數(shù)據(jù)插入INSERT是最基礎(chǔ)、最高頻的操作之一。無論是業(yè)務(wù)系統(tǒng)記錄用戶行為、日志系統(tǒng)收集跟蹤信息還是數(shù)據(jù)倉庫進(jìn)行ETL過程中的數(shù)據(jù)裝載都離不開它。很多開發(fā)者尤其是剛接觸SQL Server的朋友可能會覺得插入數(shù)據(jù)嘛不就是一句INSERT INTO ... VALUES ...的事能有什么花樣我以前也這么想直到在一次處理千萬級數(shù)據(jù)遷移的項目中一個簡單的插入操作讓整個流程從預(yù)計的2小時變成了通宵達(dá)旦的12小時我才真正意識到不同的插入方式在效率上存在著天壤之別。這次效率危機(jī)促使我系統(tǒng)地研究和測試了SQL Server中各種數(shù)據(jù)插入方法。我發(fā)現(xiàn)網(wǎng)上雖然有很多零散的資料但要么只講語法要么對比不全面缺乏一個從原理到實操、從單條到海量數(shù)據(jù)的完整效率圖譜。因此我決定結(jié)合自己多年的踩坑經(jīng)驗整理出這篇可能是目前最全面的SQL Server插入方式效率對比分析。我們將不僅僅看“誰快誰慢”更要深入理解“為什么快為什么慢”以及在不同場景下“該如何選擇”。無論你是正在優(yōu)化一個慢速接口的開發(fā)者還是需要設(shè)計高效數(shù)據(jù)歸檔方案的DBA這篇文章中的實測數(shù)據(jù)和經(jīng)驗總結(jié)都能給你提供直接的參考。2. 測試環(huán)境搭建與基準(zhǔn)數(shù)據(jù)準(zhǔn)備在開始效率對比之前一個可控、可復(fù)現(xiàn)的測試環(huán)境是得出可靠結(jié)論的前提。盲目地比較不同語法而沒有統(tǒng)一的基準(zhǔn)結(jié)果是沒有意義的。2.1 測試環(huán)境配置說明我所有的測試均在一臺標(biāo)準(zhǔn)的開發(fā)服務(wù)器上進(jìn)行其配置盡可能模擬了常見的生產(chǎn)環(huán)境但又剔除了不必要的干擾因素。數(shù)據(jù)庫版本SQL Server 2019 Developer Edition (RTM) - 15.0.2000.5。選擇2019是因為它在性能優(yōu)化特別是智能查詢處理和內(nèi)存中OLTP方面具有代表性且用戶基數(shù)大。服務(wù)器硬件CPU為Intel Xeon E-2286G 4.0GHz6核12線程內(nèi)存64GB DDR4。確保測試期間沒有其他高負(fù)載任務(wù)爭搶資源。存儲數(shù)據(jù)文件和日志文件分別存放在兩塊不同的NVMe SSD上以避免I/O成為瓶頸讓我們能更純粹地觀察不同插入語句本身的執(zhí)行開銷。數(shù)據(jù)庫設(shè)置我創(chuàng)建了一個名為PerfTest的數(shù)據(jù)庫恢復(fù)模式設(shè)置為SIMPLE以減少日志記錄對插入速度的影響這對于理解批量操作至關(guān)重要。同時將數(shù)據(jù)文件的初始大小設(shè)置為1GB自動增長為256MB避免在測試中頻繁進(jìn)行文件增長操作。2.2 測試表結(jié)構(gòu)與數(shù)據(jù)設(shè)計為了全面測試我設(shè)計了兩張核心表一張用于測試基礎(chǔ)插入另一張用于測試帶有索引和約束的場景因為這是影響插入效率的關(guān)鍵因素。-- 表1基礎(chǔ)測試表無索引模擬最“干凈”的插入環(huán)境 CREATE TABLE dbo.InsertTest_Basic ( ID INT IDENTITY(1,1) PRIMARY KEY, -- 自增主鍵會產(chǎn)生聚集索引 GuidCol UNIQUEIDENTIFIER DEFAULT NEWID(), StringCol VARCHAR(255) DEFAULT TestString, NumberCol INT DEFAULT 42, DateCol DATETIME DEFAULT GETDATE() ); -- 表2壓力測試表包含非聚集索引和默認(rèn)約束模擬典型業(yè)務(wù)表 CREATE TABLE dbo.InsertTest_WithIndex ( OrderID INT IDENTITY(1,1) PRIMARY KEY, CustomerID INT NOT NULL, ProductID INT NOT NULL, Quantity INT NOT NULL DEFAULT 1, UnitPrice DECIMAL(10, 2) NOT NULL, OrderDate DATETIME NOT NULL DEFAULT GETDATE(), Comments NVARCHAR(500) NULL ); -- 在CustomerID和OrderDate上創(chuàng)建非聚集索引這是非常常見的查詢優(yōu)化手段 CREATE INDEX IX_CustomerID_OrderDate ON dbo.InsertTest_WithIndex(CustomerID, OrderDate); -- 添加一個檢查約束 ALTER TABLE dbo.InsertTest_WithIndex ADD CONSTRAINT CHK_Quantity CHECK (Quantity 0);數(shù)據(jù)準(zhǔn)備策略我使用一個簡單的循環(huán)腳本生成了100萬行模擬數(shù)據(jù)并保存到一張臨時表中作為所有插入測試的同一份數(shù)據(jù)源。這保證了每次測試插入的數(shù)據(jù)內(nèi)容、順序和總量完全一致對比結(jié)果公平。注意在每次測試單個插入方式前我都會使用TRUNCATE TABLE來清空目標(biāo)表。TRUNCATE比DELETE更快且使用更少的日志但更重要的是它能將表的自增ID重置確保每次測試的起點相同。然后我會執(zhí)行CHECKPOINT和DBCC DROPCLEANBUFFERS命令在非生產(chǎn)環(huán)境清除數(shù)據(jù)緩存這樣每次測試都相當(dāng)于從“冷”狀態(tài)開始更能反映操作本身的磁盤I/O和計算開銷。3. 七種插入方式詳解與效率實測下面進(jìn)入核心環(huán)節(jié)。我將逐一拆解七種常見的插入方式從最基本的單條插入開始到用于海量數(shù)據(jù)遷移的專用工具結(jié)束。每種方式我都會給出典型語法、解釋其工作原理、展示實測性能數(shù)據(jù)基于上述100萬行數(shù)據(jù)并分析其效率背后的原因。3.1 方式一標(biāo)準(zhǔn)單條INSERT (INSERT ... VALUES)這是教科書里最先教的方式也是最直觀的。INSERT INTO dbo.InsertTest_Basic (GuidCol, StringCol, NumberCol, DateCol) VALUES (NEWID(), Sample, 100, GETDATE());工作原理SQL Server為這一行數(shù)據(jù)生成完整的日志記錄用于事務(wù)回滾和恢復(fù)在表中找到空閑空間或在末尾寫入數(shù)據(jù)頁如果表有聚集索引如自增ID主鍵還需要維護(hù)索引B-Tree結(jié)構(gòu)。每執(zhí)行一次都需要完成一次完整的事務(wù)流程。實測效率插入100萬行數(shù)據(jù)采用循環(huán)方式逐條執(zhí)行耗時約25分鐘。平均每秒約667條。效率分析高開銷每次插入都是一個獨立的事務(wù)意味著需要多次日志寫入、鎖獲取與釋放。這是最大的性能殺手。網(wǎng)絡(luò)往返如果在應(yīng)用程序中循環(huán)調(diào)用每次插入都是一次數(shù)據(jù)庫往返網(wǎng)絡(luò)延遲會被放大百萬倍。適用場景僅適用于極低頻的單條數(shù)據(jù)插入如用戶提交一份表單、修改單條配置。絕對禁止在循環(huán)或批量邏輯中使用此方式。3.2 方式二批量值列表插入 (INSERT ... VALUES (), (), ...)這是對單條插入的一種有效優(yōu)化允許在一條語句中插入多行。INSERT INTO dbo.InsertTest_Basic (GuidCol, StringCol, NumberCol, DateCol) VALUES (NEWID(), Batch1, 1, GETDATE()), (NEWID(), Batch2, 2, GETDATE()), -- ... 最多可以包含1000行左右受限于語句長度和參數(shù)限制 (NEWID(), BatchN, 1000, GETDATE());工作原理將多行數(shù)據(jù)打包進(jìn)一個INSERT語句。SQL Server將其作為一個事務(wù)來處理減少了事務(wù)提交次數(shù)。日志記錄雖然仍包含所有行的數(shù)據(jù)但事務(wù)管理開銷被均攤了。實測效率以每批1000行進(jìn)行插入100萬行總耗時約3分40秒。性能相比單條插入提升了近7倍。效率分析減少事務(wù)開銷這是性能提升的主要原因。仍有優(yōu)化空間雖然事務(wù)次數(shù)少了但每一行的日志記錄依然是完整的并且對于有索引的表每一行的索引維護(hù)操作仍然是離散的。批大小選擇批大小并非越大越好。過大的批處理會生成巨大的日志記錄可能阻塞日志文件甚至導(dǎo)致事務(wù)日志爆滿。通常1000到5000行是一個經(jīng)驗上的甜點區(qū)間。適用場景中小批量數(shù)據(jù)插入如從前端提交一個訂單及其明細(xì)項幾十到幾百條、批量導(dǎo)入配置數(shù)據(jù)。這是應(yīng)用程序中最常用、最實用的批量插入方式。3.3 方式三INSERT ... SELECT 查詢結(jié)果插入這種方式用于將另一個查詢的結(jié)果集插入到目標(biāo)表中。-- 假設(shè)SourceTable有100萬行數(shù)據(jù) INSERT INTO dbo.InsertTest_Basic (GuidCol, StringCol, NumberCol, DateCol) SELECT NEWID(), FromSelect, Number, GETDATE() FROM dbo.SourceTable; -- 或者從VALUES構(gòu)造的虛擬表插入 INSERT INTO dbo.InsertTest_Basic (GuidCol, StringCol, NumberCol, DateCol) SELECT NEWID(), T.Name, T.Value, GETDATE() FROM (VALUES (A, 10), (B, 20), (C, 30)) AS T(Name, Value);工作原理先執(zhí)行SELECT語句生成一個完整的結(jié)果集然后將這個結(jié)果集作為一個整體插入操作來處理。整個INSERT...SELECT是一個原子事務(wù)。實測效率從另一個具有相同結(jié)構(gòu)的表插入100萬行耗時約1分50秒。性能非常優(yōu)秀。效率分析最小化事務(wù)開銷只有一個事務(wù)。查詢優(yōu)化器介入SQL Server可以優(yōu)化整個語句的執(zhí)行計劃可能使用并行處理等高級特性。日志優(yōu)化對于某些情況如使用TABLOCK提示且數(shù)據(jù)庫處于簡單恢復(fù)模式或批量日志恢復(fù)模式SQL Server可以進(jìn)行“最小日志記錄”操作大幅減少日志量。適用場景表間數(shù)據(jù)復(fù)制、數(shù)據(jù)歸檔、基于復(fù)雜查詢結(jié)果創(chuàng)建新數(shù)據(jù)集。這是T-SQL腳本中進(jìn)行批量數(shù)據(jù)操作的首選方式。3.4 方式四使用UNION ALL模擬批量插入這是一種較老但有時仍會遇到的技巧本質(zhì)上是將多個SELECT語句用UNION ALL連接形成一個結(jié)果集再通過INSERT...SELECT插入。INSERT INTO dbo.InsertTest_Basic (GuidCol, StringCol, NumberCol, DateCol) SELECT NEWID(), Data1, 1, GETDATE() UNION ALL SELECT NEWID(), Data2, 2, GETDATE() -- ... 可以連接很多個SELECT工作原理與INSERT...SELECT類似但查詢計劃可能會有所不同。UNION ALL需要構(gòu)建一個包含所有行的派生表。實測效率插入100萬行由100萬個SELECT ... UNION ALL組成這本身構(gòu)造語句就很困難效率通常低于直接的INSERT...VALUES多行插入或INSERT...SELECT。因為解析和優(yōu)化一個極其龐大的UNION ALL語句本身開銷很大。效率分析解析開銷大SQL Server需要解析一個非常長的SQL字符串。計劃可能非最優(yōu)對于超長的UNION ALL查詢優(yōu)化器可能無法生成最佳計劃。個人建議不推薦使用這種方式進(jìn)行批量插入。它沒有性能優(yōu)勢且可讀性和可維護(hù)性差。INSERT...VALUES多行語法或INSERT...SELECT是更好的選擇。3.5 方式五BCP實用工具與BULK INSERT語句當(dāng)需要處理超大規(guī)模數(shù)據(jù)千萬、億級時就需要請出SQL Server的“重型武器”BCP和BULK INSERT。BCP (Bulk Copy Program)這是一個命令行工具用于在SQL Server實例和數(shù)據(jù)文件之間高效地大容量復(fù)制數(shù)據(jù)。bcp PerfTest.dbo.InsertTest_Basic IN D:\data.csv -c -t, -r\n -S localhost -T -b 10000-c使用字符文本格式。-t,指定字段終止符為逗號。-b 10000指定每批提交的行數(shù)為10000。-T使用Windows集成身份驗證。BULK INSERT T-SQL語句在T-SQL中直接調(diào)用大容量插入操作。BULK INSERT dbo.InsertTest_Basic FROM D:\data.csv WITH ( FIELDTERMINATOR ,, ROWTERMINATOR \n, BATCHSIZE 10000, TABLOCK -- 獲取表級鎖有助于最小日志記錄 );工作原理這兩種方式都繞過了SQL Server常規(guī)的日志記錄和約束檢查機(jī)制可配置采用最直接的數(shù)據(jù)流方式將數(shù)據(jù)頁加載到數(shù)據(jù)庫中。在配置了TABLOCK且數(shù)據(jù)庫恢復(fù)模式合適時可以進(jìn)行“最小日志記錄”速度極快。實測效率使用BCP或BULK INSERT導(dǎo)入100萬行CSV數(shù)據(jù)耗時約25秒。性能是INSERT...SELECT的4倍以上。效率分析最小日志記錄最大優(yōu)勢減少了90%以上的日志I/O。批量處理通過BATCHSIZE控制事務(wù)大小在速度和恢復(fù)能力間取得平衡。鎖機(jī)制TABLOCK提示使用表級鎖減少了鎖管理的開銷但會阻塞其他并發(fā)操作。適用場景數(shù)據(jù)倉庫的初始裝載、定期大批量數(shù)據(jù)遷移、從外部系統(tǒng)如Hadoop導(dǎo)入數(shù)據(jù)。注意事項需要文件系統(tǒng)訪問權(quán)限且對數(shù)據(jù)文件的格式要求嚴(yán)格。3.6 方式六SqlBulkCopy類 (.NET應(yīng)用程序)對于.NET開發(fā)者而言SqlBulkCopy類是應(yīng)用程序中實現(xiàn)高速數(shù)據(jù)插入的“神器”。它本質(zhì)上是BCP功能在.NET中的封裝。using (SqlConnection connection new SqlConnection(connectionString)) using (SqlBulkCopy bulkCopy new SqlBulkCopy(connection)) { connection.Open(); bulkCopy.DestinationTableName dbo.InsertTest_Basic; bulkCopy.BatchSize 5000; // 設(shè)置批大小 bulkCopy.BulkCopyTimeout 600; // 超時時間 // 如果源DataTable列與目標(biāo)表列順序一致可直接寫入 bulkCopy.WriteToServer(yourDataTable); }工作原理在內(nèi)存中構(gòu)建數(shù)據(jù)流通過TDS協(xié)議直接發(fā)送到SQL Server其底層機(jī)制與BCP類似支持最小日志記錄。實測效率從一個DataTable插入100萬行數(shù)據(jù)耗時約30秒包含.NET端的DataTable構(gòu)建時間。與BCP性能處于同一量級。效率分析進(jìn)程內(nèi)高效傳輸避免了像傳統(tǒng)ADO.NET逐條插入那樣多次網(wǎng)絡(luò)往返和命令解析。靈活的數(shù)據(jù)源可以從DataTable、DataReader、IDataReader等多種源讀取數(shù)據(jù)。可控制性強(qiáng)可以精確控制批大小、超時、映射列甚至可以在插入時觸發(fā)事件。適用場景.NET應(yīng)用程序中需要將內(nèi)存中大量數(shù)據(jù)如從文件讀取、從API獲取、計算生成持久化到SQL Server數(shù)據(jù)庫。這是應(yīng)用層批量插入的最佳實踐。3.7 方式七SELECT INTO 創(chuàng)建并插入SELECT INTO用于創(chuàng)建一個新表并將查詢結(jié)果直接插入到這個新表中。SELECT ID IDENTITY(INT, 1,1), NEWID() AS GuidCol, NewTable AS StringCol, NumberCol, GETDATE() AS DateCol INTO dbo.InsertTest_New -- 創(chuàng)建新表 FROM dbo.SourceTable;工作原理該操作是元數(shù)據(jù)操作和最小日志記錄數(shù)據(jù)插入的結(jié)合。SQL Server首先創(chuàng)建一個結(jié)構(gòu)基于查詢結(jié)果集的新表然后以高效的方式將數(shù)據(jù)填充進(jìn)去。由于是新表沒有索引、約束的維護(hù)開銷除非在語句中定義并且通常使用最小日志記錄。實測效率從源表創(chuàng)建并插入100萬行到一個新表耗時約20秒。是本次測試中最快的方法。效率分析零索引/約束開銷新表在插入數(shù)據(jù)時是“空白”的插入完成后才可能添加索引這避免了隨插隨維護(hù)的巨大開銷。最小日志記錄默認(rèn)情況下在簡單恢復(fù)模式下SELECT INTO是最小日志記錄操作。局限性它不用于向現(xiàn)有表插入數(shù)據(jù)。它的目標(biāo)是快速創(chuàng)建并填充一個新表。適用場景數(shù)據(jù)倉庫中創(chuàng)建中間表或快照表、對大型數(shù)據(jù)集進(jìn)行臨時轉(zhuǎn)換和存儲、作為復(fù)雜數(shù)據(jù)預(yù)處理的第一步。如果需要將數(shù)據(jù)插入現(xiàn)有表此方法不適用。4. 影響插入效率的關(guān)鍵因素深度剖析了解了各種方法的速度后我們必須深入骨髓理解到底是哪些因素在拖慢或加速插入操作。這樣你才能在任何場景下做出正確選擇而不僅僅是死記硬背結(jié)論。4.1 事務(wù)與日志記錄最大的性能殺手這是理解插入效率的基石。SQL Server遵循WAL原則任何數(shù)據(jù)修改必須先寫入事務(wù)日志以保證持久性和可恢復(fù)性。單條插入的災(zāi)難想象一下插入100萬行就產(chǎn)生了100萬個獨立的小事務(wù)。每個事務(wù)都需要寫日志記錄開始事務(wù)、行數(shù)據(jù)、提交事務(wù)。將日志記錄刷新到磁盤等待WRITELOG等待類型。在數(shù)據(jù)頁中寫入數(shù)據(jù)。如果頁不在內(nèi)存中還需從磁盤讀取數(shù)據(jù)頁到緩沖區(qū)。 這個過程產(chǎn)生了海量的、隨機(jī)的日志I/O速度必然慢。批量操作的優(yōu)化INSERT...SELECT或批量值列表將100萬行放在一個事務(wù)里。只需要寫一次“事務(wù)開始”和“事務(wù)提交”的日志記錄。行數(shù)據(jù)的日志記錄雖然還是要寫但因為是順序?qū)懭胄蔬h(yuǎn)高于隨機(jī)寫入。更重要的是在SIMPLE或BULK_LOGGED恢復(fù)模式下配合TABLOCK等提示可以對批量操作啟用“最小日志記錄”。最小日志記錄只記錄頁的分配和元數(shù)據(jù)變化而不記錄每一行數(shù)據(jù)的詳細(xì)內(nèi)容日志量可能減少90%以上這是BCP、BULK INSERT和SqlBulkCopy快如閃電的根本原因。實操心得對于大批量插入務(wù)必在業(yè)務(wù)允許的情況下將數(shù)據(jù)庫恢復(fù)模式切換到BULK_LOGGED并在插入語句中使用WITH (TABLOCK)提示。操作完成后可切回FULL模式。這能帶來數(shù)量級的性能提升。但切記BULK_LOGGED模式下某些大容量操作的可恢復(fù)性會降低。4.2 索引維護(hù)甜蜜的負(fù)擔(dān)表上的每個非聚集索引在插入新行時都是一份需要維護(hù)的“副本”。聚集索引數(shù)據(jù)行本身按照聚集索引鍵排序存儲。插入新行時需要在B-Tree中找到正確的位置可能導(dǎo)致頁拆分——當(dāng)一個數(shù)據(jù)頁滿了SQL Server需要將大約一半的行移動到一個新頁。這是一個昂貴的操作涉及分配新頁、移動數(shù)據(jù)、更新指針鏈。非聚集索引每個非聚集索引都有自己的B-Tree結(jié)構(gòu)。插入一行數(shù)據(jù)需要在每個非聚集索引中也插入一條對應(yīng)的索引記錄。如果一個表有5個非聚集索引插入一行就相當(dāng)于寫了6次1次數(shù)據(jù)5次索引。優(yōu)化策略先插數(shù)據(jù)后建索引對于一次性導(dǎo)入海量數(shù)據(jù)最有效的方法是先刪除所有非聚集索引和約束除了必須的甚至刪除聚集索引使表成為堆表待數(shù)據(jù)插入完成后再重新創(chuàng)建索引。重建索引是一個高效的批量操作通常比逐行維護(hù)快得多。使用有序數(shù)據(jù)如果插入的數(shù)據(jù)能按照聚集索引鍵的順序排列可以最大程度減少頁拆分和B-Tree的重新平衡。評估索引必要性在插入頻繁的表上要審慎評估每個非聚集索引的成本與收益。4.3 鎖與并發(fā)效率與并發(fā)的權(quán)衡插入操作需要獲取鎖來保證數(shù)據(jù)一致性。行鎖 vs 頁鎖 vs 表鎖默認(rèn)情況下SQL Server會從行鎖開始必要時升級。鎖的粒度越小如行鎖并發(fā)性越好但管理開銷越大。TABLOCK提示像BULK INSERT或INSERT...SELECT WITH (TABLOCK)中使用的這個提示會直接獲取表級排他鎖。這徹底消除了鎖管理開銷并是觸發(fā)最小日志記錄的條件之一。但代價是在操作期間整個表對其他所有會話都是不可訪問的。批大小BatchSize的智慧在SqlBulkCopy或BCP中設(shè)置BatchSize不僅控制了事務(wù)大小也控制了鎖的持有時間。一個大的批處理作為一個事務(wù)會持有鎖直到批處理完成。如果設(shè)置為10000則每插入10000行提交一次事務(wù)釋放一次鎖允許其他查詢在間隙中運行實現(xiàn)了吞吐量和并發(fā)性的平衡。4.4 數(shù)據(jù)類型與約束隱形成本IDENTITY列自增列本身開銷很小但它是順序的有助于聚集索引的插入性能。但高并發(fā)插入時可能成為熱點。GUID列NEWID()作為聚集索引鍵是“災(zāi)難性”的。因為NEWID()生成的是隨機(jī)值導(dǎo)致每次插入都發(fā)生在索引B-Tree的隨機(jī)位置造成大量的頁拆分和碎片。如果必須用GUID考慮使用NEWSEQUENTIALID()它生成順序的GUID能大幅減少碎片。約束檢查CHECK約束、FOREIGN KEY約束會在插入每行時觸發(fā)驗證。對于大批量導(dǎo)入可以考慮先禁用約束導(dǎo)入后再啟用并驗證。ALTER TABLE ... NOCHECK CONSTRAINT ALL和ALTER TABLE ... CHECK CONSTRAINT ALL是你的朋友。觸發(fā)器AFTER INSERT觸發(fā)器對性能影響巨大因為它會在每批甚至每行取決于觸發(fā)器定義插入后執(zhí)行。如果可能在大批量操作前禁用觸發(fā)器。5. 實戰(zhàn)場景下的選擇策略與避坑指南理論結(jié)合實踐下面我根據(jù)不同場景給出具體的插入方案選擇和必須繞開的“深坑”。5.1 場景決策樹我該用哪種方式插入少量數(shù)據(jù) 1000行到現(xiàn)有表首選在應(yīng)用層使用參數(shù)化查詢構(gòu)建一個包含多行VALUES的INSERT語句一次性提交。理由簡單、安全、性能足夠好無需引入復(fù)雜工具。在應(yīng)用層.NET/Java需要插入大量數(shù)據(jù) 1萬行首選.NET環(huán)境無條件使用SqlBulkCopy。Java生態(tài)可以使用JDBC的addBatch()和executeBatch()進(jìn)行批處理但性能不及SqlBulkCopy對于極大量數(shù)據(jù)可考慮生成文件后用BCP命令。關(guān)鍵配置設(shè)置合理的BatchSize5000-10000使用SqlBulkCopyOptions.TableLock以嘗試最小日志記錄。在數(shù)據(jù)庫層通過T-SQL腳本插入/轉(zhuǎn)移大量數(shù)據(jù)首選INSERT INTO ... SELECT ... FROM ...。這是T-SQL中最靈活、性能最好的方式。性能增強(qiáng)如果目標(biāo)表可被獨占加上WITH (TABLOCK)提示。確保源查詢本身是高效的。替代方案如果數(shù)據(jù)來自外部文件使用BULK INSERT。一次性初始化或遷移海量數(shù)據(jù)億級首選BCP命令行工具或BULK INSERT語句。標(biāo)準(zhǔn)流程 a. 將目標(biāo)數(shù)據(jù)庫恢復(fù)模式設(shè)為BULK_LOGGED。 b. 刪除目標(biāo)表上的所有非聚集索引和約束主鍵、唯一約束需謹(jǐn)慎。 c. 使用BCP或BULK INSERT配合TABLOCK導(dǎo)入數(shù)據(jù)。 d. 重新創(chuàng)建索引和約束。 e. 將恢復(fù)模式設(shè)回FULL并立即進(jìn)行日志備份。究極優(yōu)化如果表可重建使用SELECT ... INTO創(chuàng)建新表是最快的然后再創(chuàng)建索引和重命名表。需要從復(fù)雜查詢結(jié)果創(chuàng)建新表無條件首選SELECT ... INTO。它語法簡潔且自動創(chuàng)建表結(jié)構(gòu)性能最優(yōu)。5.2 常見“深坑”與避坑技巧坑1循環(huán)內(nèi)逐條插入現(xiàn)象程序或腳本運行極慢數(shù)據(jù)庫服務(wù)器WRITELOG等待高。解決這是最經(jīng)典的性能反模式。務(wù)必改為批處理。即使在存儲過程中也應(yīng)使用表值參數(shù)或臨時表積累數(shù)據(jù)然后一次性插入。坑2導(dǎo)入時索引未刪除現(xiàn)象BCP或BULK INSERT速度遠(yuǎn)低于預(yù)期可能和逐條插入差不多慢。解決牢記“先刪后建”原則。對于聚集索引如果自增列是聚集索引鍵可以保留因為它對順序插入友好。但所有非聚集索引必須刪除???未使用最小日志記錄條件現(xiàn)象日志文件暴漲導(dǎo)入速度被日志寫入拖累。解決檢查并滿足最小日志記錄條件數(shù)據(jù)庫恢復(fù)模式為SIMPLE或BULK_LOGGED操作使用了TABLOCK提示或表為空且使用了TABLOCK操作是“大容量加載”類型如BCP,BULK INSERT,INSERT ... SELECTwithTABLOCK???GUID作為聚集索引鍵且隨機(jī)插入現(xiàn)象表碎片率極高插入速度越來越慢查詢性能也下降。解決使用NEWSEQUENTIALID()代替NEWID()?;蛘呖紤]使用INT IDENTITY作為聚集索引鍵將GUID作為非聚集索引的唯一列???批大小設(shè)置不當(dāng)現(xiàn)象要么事務(wù)過大導(dǎo)致日志滿、鎖持有時間長要么批大小太小事務(wù)提交過于頻繁。解決進(jìn)行測試。從一個適中的值如10000開始觀察日志增長和并發(fā)影響。通常在保證不阻塞業(yè)務(wù)太久的前提下較大的批大小5萬-10萬能獲得更好的吞吐量???忽略觸發(fā)器與約束現(xiàn)象導(dǎo)入速度慢發(fā)現(xiàn)大量時間花在觸發(fā)器執(zhí)行或約束檢查上。解決在大批量操作前使用DISABLE TRIGGER和NOCHECK CONSTRAINT臨時禁用它們。操作完成后務(wù)必重新啟用并檢查數(shù)據(jù)完整性。6. 高級話題與未來演進(jìn)掌握了上述核心內(nèi)容你已經(jīng)能解決99%的SQL Server插入性能問題。如果你想更進(jìn)一步這里還有一些高級話題值得探索。6.1 內(nèi)存優(yōu)化表的插入從SQL Server 2014開始引入了內(nèi)存中OLTP功能可以創(chuàng)建內(nèi)存優(yōu)化表。這種表的數(shù)據(jù)完全駐留在內(nèi)存中使用無鎖、版本控制的多版本并發(fā)控制。對于極高的并發(fā)插入場景如每秒數(shù)萬次的交易記錄內(nèi)存優(yōu)化表的插入性能可以是基于磁盤的表的數(shù)十倍。它的插入操作更像是INSERT ... VALUES的語法但底層是完全不同的引擎。如果你的場景是寫密集型、高并發(fā)、短事務(wù)內(nèi)存優(yōu)化表是一個革命性的選擇。不過它需要仔細(xì)的容量規(guī)劃和特定的數(shù)據(jù)類型支持。6.2 分區(qū)表的切換插入對于按時間歸檔的數(shù)據(jù)如日志表、交易歷史表分區(qū)表是終極解決方案。最優(yōu)雅的插入方式不是INSERT而是分區(qū)切換。你可以在一個空的、結(jié)構(gòu)相同的分區(qū)表或普通表中使用最快的方式如BCP批量插入數(shù)據(jù)。在這個表上創(chuàng)建與主分區(qū)表完全一致的索引和約束。使用ALTER TABLE ... SWITCH TO ...語句在毫秒級別將整個分區(qū)“切換”到主分區(qū)表中。 這種方式實現(xiàn)了真正的“零影響”數(shù)據(jù)插入對主表幾乎沒有阻塞是數(shù)據(jù)倉庫加載數(shù)據(jù)的黃金標(biāo)準(zhǔn)。6.3 使用變更數(shù)據(jù)捕獲與外部隊列在一些超大規(guī)模、解耦的架構(gòu)中插入操作可能不再是直接操作數(shù)據(jù)庫。而是應(yīng)用將數(shù)據(jù)寫入一個高性能的消息隊列如Kafka, RabbitMQ。一個獨立的消費者服務(wù)從隊列中批量取出數(shù)據(jù)。消費者服務(wù)使用SqlBulkCopy或其他批量工具將數(shù)據(jù)寫入SQL Server。 這種架構(gòu)將插入的“實時性”要求與數(shù)據(jù)庫的“吞吐量”能力解耦提供了更好的可擴(kuò)展性和容錯性。SQL Server自身的Change Data Capture功能也可以捕捉變更并輸出到外部但更常用于下游分析系統(tǒng)。在我經(jīng)歷過的眾多性能優(yōu)化案例中慢速插入往往不是由一個原因造成的而是多個因素疊加的結(jié)果。我的建議是養(yǎng)成習(xí)慣面對批量操作首先思考“能否批量”然后檢查“索引和約束是否已處理”最后確認(rèn)“是否滿足了最小日志記錄的條件”。把這三點做到位插入效率就不會再成為你系統(tǒng)的瓶頸。數(shù)據(jù)庫操作很多時候比的不是誰懂得更多炫技的語法而是誰對底層機(jī)制的理解更扎實誰在細(xì)節(jié)上考慮得更周全。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩精品亚洲专区在线影视| 一区二区三区精品视频| 国产熟女无套内射| 婷婷五月影院| 蜜臀一区二区三区在线 | 国内操逼视频二区| 狠狠操夜夜| 久久久一二三四区| 久久一本大香蕉| 国产亚洲精品无码三区| 这里只有精品97| 亚洲熟女乱色一区二区三区久久久 | 午夜后入| 精品人妻15区| 久久9亚洲| 国产路线专区| 久久久久幕乱码| 成人综合视频久久| 亚洲AV无码国产成人| 亚洲激情在线观看一区| 欧美丝袜91| 婷婷香蕉欧美在线一区二区三区| 91熟女视频网| 综合色图区| www.黄色在线| 国产精品成人无码av无码免费| 免费国产视频| 欧美日韩人妻精品系列一区二区三区| 亚洲本色精品一区二区久久| 人人操人人叉人人插人人| 2019天天干| 精品一国2| 激情文学亚洲| 亚洲精品乱码久久久久久蜜桃麻豆| 亭亭丁香激情| 看日韩美女二区三区免费操逼视频| 一本一道vs波多野结衣| 熟女一区二区| 91中文字幕制服丝袜免费视频| 91N欧美| 久热影视| 超碰美国| 欧美传媒| 久久久国产亚洲精品系列| 欧美日本成人一区二区| 国产精品午夜高潮呻吟久久av| 国产精品秘 福利姬在线观看| 国产日韩欧美中文在线播放| 精品十八在线观看| 黄色二级片网站| 婷婷伊人綜合中文字幕小说| 亚洲城人男人的天堂| 91久久久久久| 人人操天天爽| 日本精品九九九| 日韩精品 欧美激情| av婷婷色网| 国产精品人妻无码久久久互動交流| 久久精品 六十路 熟女 欧美| 久久久久骚| 国产成人网址| 青青草大香蕉在线视频| 91欧美性| 五月天久久人妻| nuu12国产麻豆精品| 激情婷婷丁香| 白丝在线一区| 丰满人妻-区二区三区免费看 | 国产欧美日韩女同性恋ww喷水精品 | 大香久久| 精品v日韩欧美国产| 少妇3P性爱自拍| 国产精品爽爽v| 一区二区影院| 婷婷月色| 成人综合视频久久| 蜜桃久久久久久久久久久久| 五月天精品| 超碰九7| 日B操| 成人小说视频在线精品欧美| 国产AV激情无码久久无码 | 操人人| 人人操人人色人人摸| 一级黄色性爱A级片| 中文字幕亚洲热播人妻| 麻豆婷婷成人一二三| 久久侵犯人妻爽爽爽| 亚洲九九视频在线观看| www.男人的天堂| 久96热在线观看视频| 日韩卡一卡二卡三在线| 乱伦日本色图AⅤ| 红杏大香蕉| 亚洲射综合网| 老熟乱一区二区三区四区| 福利天天都操| jk白丝没脱就开始啪啪| 婷婷六月天| 国产精品天干天干综合网麻豆 | 78操B| 偷拍偷窥与盗摄视频专区| 亚洲国产欧美另类自拍| yirendaxiangjiashipin| 97av,com| 国内精品久久人妻性色av| 国产精品香蕉热久久新品| 久久伊人在线五区| 深夜激情| 欧美系列在线一区二区| 日本999精品视频| 偷拍视频青青草在线视频| 精品国产丝袜一区二区三区乱码| 国产白领连续中出在线观看| 五月丁香| sewuyueav| 东北老女人的激情视频| 好爽视频在线观看视频| 爱射综合| 欧洲色综合| 免费伦费视频在线观看| 久久精品国产亚洲AV片多多 | 日韩人妻一二三区视频| 一区麻豆 高清中文字幕| 91色综合色| 99亚洲精品| 久久精品免费| 国产女大学生AV| 99综合视频一体| 久久久久久久9最新免费视频观看| 欧美精品久久96人妻无码| 五月婷婷丁香| 欧美日韩在线小说| 97国产色综合| 婷婷五月成人| 国产欧美一区激情交| 欧美另类色| 国产又粗又长又大的视频| 天天草天天干天天日| 又黄又粗又硬又长又大| 久操凹凸视频| 欧美黑人168页欧美黑人167| 91人妻Pr| 天天激清| 精品女同一区二区三区| 操婷婷逼| 久久久久免费少妇| 久久久啊啊啊| 蜜臀少妇一区二区| 日韩在线国产字幕| 欧美五区| 亚洲无码日韩电影| 欧美熟女激情| 久久日韩精品一区二区| 五月开心久久AV官网| 国产高清自拍视频| 91精品国久久久久久无码| 亚洲国产精品无码AV在线| 国产AV天美| 超碰97极品9| 黄页视频网站野外| 综合av影片| 成人AV超碰免费在线| 嗯嗯嗯嗯啊啊啊好紧好大| 久久久青青草| 婷婷大香蕉| 操熟女91| 亚洲国产一区二区三区在线| 成人麻豆av电影网站| 香蕉久久国产AV一区二区| 啊啊啊啊啊啊啊好爽不要| 久久久久久人妻一区精品色欧美| 天操天操夜操夜月月年年操操 | 日韩欧美国产高清视频| 骚女天天综合网| 四月丁香婷婷| 99啪啪视频| 91无遮挡| 日韩中文9| 久草久热| 女人爽到高潮潮喷18禁网站| 一级做a爰片久久毛片图片| 99这里都是精品| 天天干美少妇一区| 亚洲无码免费看| www男人天堂| 蜜臀精品1区2区| 国产精品无码在线| 久久精品三级影视| 亚洲玖玖爱| 亚州AV无码国产精品| 九九人妻| 国产精品熟女九九九| 日本性爱不卡视频| 亚洲成人免费中文字幕| 精品无码秘 人妻一区二区| 九九色综合| 国产一级内射无挡观看| 亚洲情色综合| 九九九网站| 亚洲日本天堂| 91热色| 闷骚老熟女15P| AV和黑人在线播放| 亚洲色图尤物视频| 中文字幕丰满子伦无码专区在线视频最新 | 亚洲Av噜噜一区二区三区妖精| 亚欧精品久久久久久久久久久| 欧美日韩国产高清在线一二三区| 亚川综合视频| 激情抓乳插进去啪啪啪日韩| 欧美色图校园春色| 欧美淫乱视频| 五月天欧美色图| 97天天操天天干| 丰满少妇一区二区三区四区观看| 操逼日韩无码 | 日韩亚洲中文字幕在线| 人人做天天爱| 国产熟女完整版中字| 欧美日韩另类在线播放| 日本淫穴在线| 久久久精品国产亚洲AV无码| 日韩精品亚洲专区在线影视| 欧美性巨大╳╳╳╳╳高跟鞋| 人人操人人插 - 百度 - 百度| 久久久青青草| 骚熟女吞| 天堂涩涩| 久久久久人| 中文字幕一区二区无码成人| 久操av在线| www.狠狠干.coom| 天天做天天爱| 日韩成人性爱电影在线播放| 中日高清无码操逼视频| 五月丁香影院| 欧美人妻精品| 夜夜综合| 插入粉嫩少妇视频| 色综合九九| 欧美AB在线| 一区二区影视| 欧美成人A√在线一区二区| 韩国久久97| 91精品电影18| 嗯嗯啊好大| 婷婷五月天久久精品视频一区二区三区 | 超碰人人干天天射| 东京热毛片调教| 精品久久久久瑟瑟| 国产小u女在线观看| 欧美综合传媒| 国产精品午夜成人福利| 欧美日韩在线小说 | 99久久久er直播网址| 无码人妻毛片丰满熟妇精品区| 十八禁的黄污污免费网站| 亚洲欧美在线综合| 99xav| 超碰精品在线| 日本精品一级二级三级| 探花视频免费观看国产专区| 嗯嗯啊啊啊好爽| 精品中文一区二区| 国产青青美女玩逼视频| 亚熟在线| 国内毛片国产专区二| 四虎精品一区二区| 欧美男人的天堂| 区一在线观看| 日韩乱码Av| 成人日韩欧美| 成人午夜小视频手机在线看| 免费A V在线播放| 91欧美色| 欧美日韩在线小说| 免费国产视频| 天操天操夜操夜月月年年操操| 夜夜狼人妻| 91处女在线观看| 无码人妻1727| 久久久一区二区三区麻豆| 欧美躁死她一区二区| 偷拍超碰| 日韩特一级久久| 久久久久网站-538在线视频-欧美永久乱码 | 97超碰超碰| 日1区2区3区2020| 东北女人性交| 人妻一区二区三区视频 | 亚洲s色图| 久久久96精品| 揉揉揉夜夜| 精品美女久久一二三| 欧美国产成人在线| 狠狠操狠狠燥| 麻豆 亚洲 97| 97亚洲综合在线| 美女上床网站| 精品国产一区二区三区四区在线看| 九九精品99| 精品亚洲国产成人AV制服丝袜 | 狠狠爱综合网| 亚洲精品1区| 美女好片色日本| 屁股久久久久久| 91av一区二区在线观看| 1024人妻熟女一区二区三区| 亭亭丁香激情| 国产9l 大屁股| 免费人成在线观看网站品爱网| 99久久精品无码一区二区毛片免费 | 麻豆亚洲Av成人无码一区精品| 久久人人妻| 91色欧美| 国产高清成人传媒影视| 亚洲色图 欧美热图 清纯唯美 另类自拍| 蜜屁Av| 中文字幕后石码四区五区| 先锋色眉乱伦资源| 在线观看精品国产免费| 2019亚洲男人天堂| 偷窥自拍亚洲天堂网爆| 超碰欧美COM| 无码高清专| 91在线免费精品视频| 中文字幕免费看大片| 超碰98综合网| 免费观看的黄色的网站| 欧美色图亚洲特色| 操逼国产免费| 久久久78| 超碰在线人妻不卡| 国产精品自拍xxxx| 青青草国产一区二区三区| 特级特黄一级毛片免费| 中文字幕伊人| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 中文久久久| 中文字幕视频一区视频二区| 妇女性内射冈站HDWWWCOM| 欧美熟女少妇| 91九色蝌蚪在线观看| 日韩女优在线| 成人av影院在线观看| 日本一级不卡一二区| 九九久久综合| AV免费在线播放一区| 久久精品无码一区二区三区| 91性高| 大香蕉综合| 中文字幕一区二区日韩网| 安徽熟妇视频| 精品超碰中文在线| 人人 操人人 操人人| 久久久一区二区| 中文字幕二区日韩天堂| 18禁看网站一区| 78超碰| 欧美在线中M| 中文字幕熟女人妻丝袜丝| 亚洲色诱惑| 国产小视频91| 黄片免费久久久久久久| 麻豆国产视频精品观看| 中文字幕人妻资源在线| 女生看匆91网站| 欧美久久婷婷| 99国产精品久久久久久久成人热| 人妻少妇色综合| 粉嫩国产精品久久粉嫩| 亚欧Av| 黄片在线免费在线观看| 啪啪资源网| 日本三级一区二区 在线| 亚洲自拍偷拍视频在线| a亚洲欧美色欲| 97在线观看| 欧美中文综合| 2019精品国产无码成人| 上海一级黄片| 嗯嗯啊啊视频在线看| 欧美一区二区三区大综合| 国产精品视频电影| 久久久久久久久九九久孕交| 精品中文一区二区| 久热这里只有精品9| 青青草依人大香蕉| 国产丝袜啪啪| 国产精品国产自产高清AV| 成人性爱视频在线看| 超碰国产精品久| 国岛片视频| 18禁的网站在线| 五月丁香成人网| 搡老女人老妇女老妇老熟女怎么读| www.色婷婷| 欧美亚洲美少妇一区二区| 中国和日本人色哪个不下载能放| 欧美一二三级精品在线| 久久草大香蕉| 免费99精品国产自在在线| 欧美操逼录像国产黄色国产| www.91人妻.com| 亚洲色图欧美视频| 囯产乱伦一区二区三女| 国偷自 一区二区| 人人看黄色视频| 色妺妺在线视频| 天天综合网合集91| 伊人伊人LD| 9久在线视频只有精品| 自怕偷自怕亚洲精品| 黄片免费日韩| 精品国产乱码久久久久久蜜臀| 激情五月丁香五月| 精品夜夜澡人妻无码| 久久精品人妻一区二区三区| 天天插天天干| 欧美色66| 三上悠亚在线毛片91| 国产日逼视频| 欧美日韩国产高清在线一二三区 | 密臀AV在线| 国产福利视频精品视频| 国产91福利小视频在线观看| 成人av免费观看| 国产精品美女久久久久久网站| 囯产精品久久久久久久久久梁医生 | 欧洲中文字幕| 国产探花日韩援交| 操逼网免费无码视频| 少妇色综合| 欧美78| 91精品国产综合久久久蜜臀酒店| 国产欧美日韩精品中文| 亚洲国产精品无码AV久久久| 五月丁香久久| 94色色电影网| 日韩免费a级毛片无码a∨| 午夜精品99久久久久传媒| 三级网色| 人人操,操人人| 91久精品| 综合色91| 美女天天干| 成人丁香五月| 精品久久久久久AV无码| 国模精品一区二区三区苹果色戒| 久久只有精品| 激情综合网一盗摄| 超碰色97| 超碰色图| 嗯嗯啊啊用力视频免费| 中文字幕av色| 欧美在线啊啊啊 | 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 国产亚洲女v在线观看| 天天躁日日躁狠狠狠躁| 国产成人无码网站在线视频| 老熟妇一区二区三区…| 欧美精品久久久久久久久88| 九九碰九九爱97超碰| 色综和网| 亚洲啪AⅤ永久无码| 2001天天操| 国产综合色精品在线观看| 2018天天干在线视频| 九九九精品| 乱码人妻一区二区三区| 三级激情网站| 人妻夜夜爽天天爽三区麻豆AV网站| 99999精品成人| 竹菊一区二区三区AV线| 伊人9| 丁香六月啪啪| 亚洲日韩精品在线播放| 99热 按摩 日韩| 999精品女人| 久草线上视频免费看| 日本成熟少妇A∨网站| 中文 人妻 制服| 天天天天天天天天综合| 秋霞怕怕片| 精品久久久av无码免费| 综合 亚洲 欧美| 国产女主播视频在线观看| 中国AAAAAA黄色片| 中文字幕欧美丝袜07资源| 久久久久久人| 女同性恋久久| 亚洲宅男天堂| 欧美在线官网| 人妻啪| 免费A V在线| 少妇高潮99p| 亚洲欧洲综合| 国产一区二区三区精品观看啪| 伊人久久综合影院| 激情综合久久| 欧美综合综合| 国产一区二区免费福利片| 成人性交免费视频| 成熟熟女国产精品一区二区| 欧美另类自拍 | 欧美日韩精品国产91| 亚洲涩涩| 97亚洲欧美| 色婷婷电影网| 综合网亚洲在线| 中文乱码字幕观看| 密臀AV在线| 亚洲国产天堂| 黄片www视频免费| 成人性爱av| 五十路熟女人妻一区二区在线观看 | 国产家庭乱伦网址| 综合色久欲| 91|九色|国产熟女| 久久中出在线| 一级毛片电影免费看| 久久影视二区三区行押| 91av一区二区在线观看| 99热在线播放| 五月婷婷综合在线| 国产超碰AV在线精品| 精品国产一区二区三区四区在线看| 屌逼传媒| 亚洲欧美大| 操操操操网黑人| 伊人少妇久久久| 久久有码视频| 久久久久免费看少妇A片特黄| 亚洲中文字幕妇伦久久| 国产剧情AV不卡在线观看| 青娱乐休闲视频在线观看| 人人扣人人操| 欧亚韩国999| 亚洲天堂电影精品一区| yw尤物av无码点击进入麻豆| 91 手机在线播放 绯色| 91一起操| 蜜臀99久久精品久久久久| 国产激情在线| 国产97在线 | 亚洲| 欧美精品激情| 亚洲精品丝袜-不卡成人免费……| 欧美人妻一区二区| 9丨久久九九九| 美女的肌被草喷水视频| www..com操老师| 东北老熟女| 久久精品国产精品一区| 亚洲揄拍网| 欧洲亚洲综合| 精品久久久高清无码| www.99在线| 天天拍夜夜| 色欲久久99精品久久| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产一级黄色片在线观看| 久久久亚洲欧美综合| 色九久| 在线国产探花| 九九九九九九九精品视频| 久久成人午夜精品影院| 人妻酒店出差被中出免费在线播放| 欧美人妻久久精品二区三区| wwe 天天干.com| 日本在线激情一区二区三区| 久久久久久十| 久久精品性| 国产精品无套内谢| 人妻色偷色噜| www亚洲免费| 亚洲成人性爱网站在线播放| 69天堂| 亚洲熟久久| 男人的天堂.com| 在线中文字幕视频| 啊啊啊久久| 91丝袜在线观看| 伦伦成年午夜免费视频| 久久一区二区高清免费| 97在线免费观看| 亚洲精品人体| 亚洲综合春色| 亚洲综合五月天婷婷丁香| 在线强奷到舒服的无码视频| 天天日老熟妇| 免费成人自拍视频在线| 久操精品| 人妻丝袜一区二区三区在线| 欧日a| 尻女朋友一夜| 免费综合亚洲中文| 黄网在线播放| 欧美日韩精品国产91| 国产精品天干天干综合网麻豆| 丝袜内射| 久草电影网| 日本成人A片网站| 久久久久久电影| 97亚洲在线| 欧美老妇女内射网址| 日本精品九九九| 黄色十八禁| 一起草高清无码| 亚洲色悠悠久久88| 日本一区二区中文字幕久久| 欧美熟妇成人一区二区| 亚洲少妇诱惑| 熟女乱伦A| 亚欧国产无码精品在线| 五月天婷精品激情| 欧美天天综合| 97色插| 96精品在线| 91在线丝袜| 992这里有精品| 91成人社区| 天美传媒AV在线播放| 91狠| 欧美强奸乱| 色哟哟精品1精品2| 欧美人妻制服| 人人爽天天爽| 久久久久久国产无码精品| 日韩偷拍色图| 夜夜黄| 学生妹天天看| 日韩性爱视频免费在线| 中文一区二区| 亚洲精品97| 色呦呦国产精品免费看| 中出789在线视频| 亚洲AV在线资源| 天美麻花大全视频| 啊…啊…操我用力操我| 97在线免费看视频| 中文字幕大片三级狠狠干| 中文字幕一区二区三区人妻不卡 | 亚洲天堂自拍| 91在线精品一区二区三区| #NAME?| 蜜桃久久综合视频| 久久久久久亚洲Av无码| 黄呦呦在线| 鸥美极品| 亚洲性少妇| 在线国产探花| 亚洲 欧美 色图| 精品人成视频在线观看| 欧美人妻少妇| 亚洲淫乱骚妇AV| 性色av网站| 91美女丝袜诱惑视频| 久久毛卡| 最新av网站在线观看| 欧洲综合色| 亚洲一级性爱视频免费看| 91欧美www| 大香网伊人久久综合网eew| 久久久久免费看少妇A片特黄| 亚洲免费在线探花| av黄图片在线观看| 欧美亚洲首页| 久久精品免费| 亚洲永久永久永久永久一级一级一级精品 | 熟妇人妻精品一区二区| 黄色视频60分钟| 国产一级特黄大片处女| 欧美九九九九九| 日本一天色道久久久精品视频| 亚洲少妇色图自慰直播| 志村玲子视频一区二区| 以及麻豆国产入口在线观看免费| 97欧美日韩中文| A片大香蕉在线| 久久精品欧美一区二区三区不卡| 四虎精品亚洲| 精品传媒在线一区| 日欧操屄视频| 99热导航| 日韩欧美天天爽爽爽天天爽爽| 人人色人人射人人妻| 欧美性爱网97| 超碰欧美| 国产家庭乱伦性爱视频| 天天干天天燥| 黄色人人| 黄色一区三区| 国产一区二区精品久久久不卡蜜臀| 色婷婷淫色网| 99热日| 精品国产www久久| 日本亚洲熟女视频| 丁香六月婷婷久久综合| 天美av在线观看| 天天视频网站黄| 中文字幕人妻资源在线| 亚洲综合电影| 日本污ww视频网站| 久久久九九九九| 午夜啊啊啊| 亚洲美女黄色| 亚洲日韩电影| 97国产精选| 69精品| 亚洲狠| 日韩在线欧美精品一区二区| 久久久国产护士丝袜美腿一| 国产后入| 大香网伊人久久综合| 99爱久久视频频| Av手机版天堂网| 综合干干干av久久久综合网| 99精品人人爽| 中文操逼字幕| 殴美,日韩国产伦精品| 国产精品69人妻无码久久久| 99操逼| 超碰天天久久79| 久久99干一本高清| 五月天精品| 精彩久久中文| 加勒比中文av| 日韩黄色一区二区三区| 美国aaaaa一级黄片| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 天天日日本| 超碰97亚洲| 亚洲综合精品国产一区| 91麻豆天美国产| 国产精品盗摄 偷窥盗摄| 女性喷水高潮在线观看| 超碰在线人妻| 天天影视91看看| 美女极品一区二区三区| 视频不卡中文字幕| 亚洲天堂性爱| 91美女視頻| 自拍偷拍国产欧美日韩韩| A级在线视频| 亚洲AV在线资源| 九九精品99| 夜夜骑天天燥| 色婷婷电影网| 狠狠干狠狠干| 97超碰欧美中文字幕| 一区二区三区在线资源| 欧美性爱精品七区| 在线色导航| 操屄日韩| 91 亚洲情侣偷拍 久久| 手机看片1024你懂的国产| 四季av一区二区凹凸精品小说| 妇人噜噜| 大香蕉久| 久久国产成人精品国产成人亚洲| 青青爽| 色偷偷色偷偷欧美日韩| 99国产人成精品| 国产精品久久久久久无码红治院| 999熟女精品| 东京热毛片177b2viP| 欧美日韩亚洲少妇寂寞影院正在播放| 91殴美大片| 国产性爱乱伦AV| 无码粉嫩白虎一线天b区| 日韩亚洲中文字幕在线| 日本操逼无码| 99啪| 日韩色欲久久一二三四区| 插入综合网| 久久99黄色卞西瓜| 免费看日本操逼视频| 91在线精品一区二区三区| 秋霞视频一区二区| 爱欲AV| 大香蕉伊人久久| 97人人操人人摸人人爱| 天天干天天燥| 五月婷丁香| www被窝色com| 亚洲视频一二区| 久久一区,青青青青草视频在线播放| 亚洲色 国产 欧美 日韩| 农村妇女精品一区二区| 97视频在线观看播放与子乱对白在线……| 五月丁香成人网| 99爱在线视频| 欧美婷婷五月天| 亚洲情色综合网| 国内偷拍精品一区二区| 国产最新小视频在线播放下载| 偷拍精品一区二区三区| 亚洲精品久久久久毛片A片拉屎 | 精品小视频在线| 综合网欧| 亚洲一区二区精品福利| 日韩精品一区二区三区色欲| 桃色五月天| 黄色十八禁网站| 人妻精品视频一区二区三区| 国产农村妇女精品一| 青青草手机在线免费观看| 操逼内射干逼白丝91| 久久AV无码1区2区3区| 亚洲精品性爱片| 久久高清欧美国产| 丝袜喷水在线| 国产中文福利| 欧美精品91| 精品久久99| 欧美美女自慰一区二区三区| 校园春色宗合网| 欧美色图综合网| 飘花国产午夜精品不卡| 亚洲色欧美| 国产97亚洲| 精品人妻一区二区三区日产乱码| 久综合国内精品自在自线| 亚洲 日本 一 二 三| 亚洲图片色图欧美另类| 91丨国产丨白浆| 极品出轨视频网站| 色青青久久影视| 情色五月天就去干| 久久伊人在线五区| JuliaAnn丝袜熟女系列| 欧美精品日韩久久久九| 97久久精品国产| 999亚洲国产视频| 懂色av一区二区三区天美传媒| 亚洲欧美国产中文视频| 狠狠操狠狠插| 可乐操亚洲蜜911| 91夜色chaopeng| 色五月激情综合网| 国产自啪精品视频网站黑丝| 国产乱伦搜索结果91P| 超碰人妻在线| 亚洲国产婷婷在线播放| 综合久久久久久久综合网| 久久久久久久少妇| 欧美强奸乱能| 18精品一二区| 亚洲人在线| 久无码| 97在线免费| 欧美日韩精品久久| 九九色热| 亚州熟女乱伦| 你懂得91| 天天躁日日躁狠狠躁| 日本免费一区二区不卡| 亚洲最大91网| 欧美午夜视频免费观看| 国产不卡免费在线视频| 人妻丰满熟妇av无码区蜜桃| 91久久久久久久| 女人精品内射国产99| 欧美日韩m| 美女网站黄页| 91丨精品丨国产丨丝袜| 欧美乱色| 一起草av| 亚洲天堂电影精品一区| 91狠狠综合久久久久久| 999久久久精品国产| 亚洲精品少妇| 东北老熟女| 亚洲成人一二三区| 97香蕉碰碰人妻国产欧美| 99热aaa| 综合激情婷婷| 一区操逼日比视频| 3PAV乱伦视频| 欧美九九九| 午夜男人av| J?P?NESEHD熟女熟妇伦| 色姑娘综合网| 欧美色干| 96国产精品| 激情 欧美 亚洲 小说| av大香蕉| 亚洲一区二区精品福利| 人妻人人做人人澡人人爽欧美一区| 韩国一级做a久久久久| 9精品久久久久| 久久的网站啊啊啊啊啊| 99国产天美| 熟妇高潮精品一区二区三区下载| 97干com| 丁香九月激情啪| 日本一二三免费久久| 日韩成人性日韩成人性爱视频在线免费观看 | 韩日精品福利视频一区不卡在线免| 青草香蕉网| 国产aⅴ无码片毛片一级网站| 桃花色涩综合影院| 色噜噜国产在线| 午夜激情床戏激情| 久久久久久久久九九久孕交| 男人天堂2019| 久久欧美1卡2卡3| 99爱久久视频频| 使劲用力艹少妇视频一区二区| 中文字幕免费看| 综合色好色| 国产极品999| 亚洲av资源| 一级片视频啪啪| 成人免费福利在线观看| 影音先锋国产精品| 强奸乱伦中文字幕AV| 高清国产精品福利网站| 午夜视频黄| 丰满人妻一区二区三区大胸懂色| 99热只有| 精品网站99999| 国产中文字幕在线点播| 91色综合激情| 日本高清视频在线观看黄已三辽| 国产精品福利视频| 国产一级舔足在线观看| 25国产精品免费观看| 天天插夜夜操| 欧美日韩国产电影| 夜夜欢天天干| 日韩精品在线观看网站| 国产乱青青草久久| 人人插人人摸人人| 日韩亚洲国产视频| 精品无码少妇| 国产久久成人| 天天摸夜夜操视频| 欧美日韩亚洲少妇寂寞影院正在播放 | 欧美Ⅴ性爱| 国产综合久久久麻桃个| 亚洲无码色| 国产精品乱码久久| 亚洲成人一二三区| 美女被啪到深处抽搐视频| 国产乱码久久| 人人污日韩一区二区| 欧美激情久操网| 久久九七| 久久成人国产精品| 九九夜精品九九在线| 国产精品国产亚洲区艳妇糸列| 在线观看不卡一区二区三区| 操操操操操操| 国产精品自拍xxxx| 色色99| 亚洲无码太久| 人妻无码一区二区三区久久99| 亚洲 在线| 久久久啊啊啊| 91超碰人人操| 午夜精品视频777| 成人黄页| 五月丁香啪| 亚州综合图片| 翘臀vidoes| 日韩欧美大力操| 韩国毛片一区二区三区| 天美麻花大全视频| 伊人网青青| 午夜操逼不卡| 丰满人妻无码一区二区三区| 97天天插| 九九热视频这里只有精品| 337p大胆噜噜噜噜噜91Av| 国产乱不卡| 久久久九| 午夜精品久久久久久久久久久久久| 九九自拍伦理| 国内偷拍精品一区二区| 日日骚av| 精品人妻一区二区三区视频| 97玖玖超碰| 人人做,人人操,人人摸| 国产后入清纯| 久久精品国产久精国产| 五月天大香蕉| 美女被艹尤物视频| 97在线视频观看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 无码高清操逼| 亚洲精品久久久久久| 久久97资源 网| 天天摸夜夜摸| 天天干天天日天天射黄色大片| 99re这里| 亚洲日本激情| 国产AV色黄看到爽| AV天堂国产| 欧美性爱精品七区| 97超碰久久| 死我十八禁| 97色干| 色呦呦、国产精品| 91欧美长吊| 亚洲永久永久永久永久一级一级一级精品| 日韩熟女精品无码专区一区二区| 丝袜夫妻自拍| 素人无码中文字幕| 色色热| 亚洲综合69| 色香天天| 无码最新| 久久香蕉国产传媒一区剧情天美| www.91色综合| 欧美精品三区| 理论久久婷婷网 8| 天天干夜夜| 日小BB小视频| 亚洲图片欧美在线视频| 神马影院午夜福利久久久| 97资源站久久| 成人三级片无码| 久久系列| 久热伊人| 天天影视之亚洲综合网| 国产一国产一级毛片古装| 一级免费啪啪片| 激情网五月天| 久久香蕉国产线看观看亚洲女人| 天天综和| 亚洲一区二区在线观看91| 欧美在线播放aaaa| 亚精品无码毛片一区二区三区| 久久系列| 九九久久精品| 一级人妻性爱视频| jazzjazz国产精品麻豆| 殴美性色a级欧美| 91日韩| 五月丁香色综合| 少妇被c 黄 免费观看| 精品女人999| 男人的天堂kva| 国产精品丝袜久久亚洲不卡| 久久精品 六十路 熟女 欧美| 日韩人妻操B| 性一级黄色录像片网站导航| 九九99久久| 精精品人妻一区二区三区| 久久极品一区二区| 日韩99神马视频片| 综合网亚洲| 有码色中文字幕在线观看| 日本成人在线不卡一区二区三区 | 久久久久久久六六| 乱伦Av网| 人人摸人人添人人操| 一,爱啪啪,在线免费视频| 久久久久久久久久久久欧美日| 天天插夜夜操| 97爱亚洲| 99九九久久| 国产天美欧美| 日韩在线观看中文字幕视频| 欧美一级欧美三级在线观看| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 91少妇高潮| 伊人久久艹| 亚洲精品天天影视综合网 | 一本大道不卡一二三区| 天天伊人| 天天干人人乐| 亚洲 欧美 日本 国内 首页| 99日免费视频中文字幕| 99热日| 五月天加勒比啪| 国产成人主播| 天天色踪合| 人人澡人人澡人人| 老熟乱一区二区三区四区| 精品一区二区三区18| 欧美色图自拍| 亚洲男人天堂视频| 桑老女人九区| 熟妇色99| av中亚| 白丝被操91| www网站黄| 亚洲最大黄网| 嗯……啊…嗯嗯…啊…好舒服| 人妻在线大香蕉| 夜夜夜爽www精品视频| 国产亚洲精品久久久久小| 国产精品探花视频| 婷婷综合| 99福利社| 性夜影院爽黄A爽免费动漫| 围产精品一区二区三区视频播放| 色色操| 97操综合| 久草免费福利在线播放| 91久精品| 国产AV人人夜夜澡人人爽麻豆| 91色人妻| 熟女人妻av在线资源,黄色的资源| 大香伊人在线一区| 久草新在线| 性爱视频无打码在线观看| 国产成人免费观看在线视频| 欧美淫穴| 国产视频第二页| 免费一级欧美片片线观看| 加勒比伊人综合| 1000部熟女视频在线观看| 99热综合在线| 91成人18| 日韩超碰精品综合| 久操97| 懂色综合久久久| 美女高潮国产高清| 混色激情av| 久久久久久久久9| 狠狠干狠狠色| 男人天堂网址| 美女黄页| 国产一区在线观看无码AV| 日本一片一区| 久久久不卡| 欧美|91色综合| 欧美日韩在线视频网站| 熟女高潮合集-永久久久-成人AV| 亚欧毛片基地国产毛片基地| 久久这里只精品| 久久久无码视频| 久插不卡| 这里只有精品视频在线观看麻豆| 久久99精品九九久久久婷婷| 国产精品成人蜜臀AV在线| 中文熟女五十乱码在线| 成人片在线播放| 国产第12页| 国产AV中文| 欧洲精品网| 天堂av2019| 午夜偷拍久久熟女| 蜜桃精品视频一区| 97色碰| 国产女人操逼视频| 久久久久久九九九九九| 亚洲一本色码中文字幕| 一区二区三区网站日日骚| 久久久免费一级黄片| 天天看天天日| 啊啊啊啊视频免费| 郑州宾馆老熟女露脸啪啪| 暴力av在线| 亚洲综合九| 人妻少妇久久久|