Aracılığıyla paylaş


Satır veri

Küçük orta büyük değer türleri (varchar(max), nvarchar(max), varbinary(max), ve xml) ve büyük nesne (lob) veri türleri (text, ntext, ve image) bir veri satırı. depolanabilirİki seçenekleri kullanarak bu davranışı denetlenir sp_tableoption sistem saklı yordamı: büyük bir değer türü satır seçeneği, büyük bir değer türleri ve satırındaki metin büyük nesne türleri için seçeneği.Bu seçenekler için en iyi şekilde kullanılır tabloiçinde bu veri türleri herhangi birinin veri değerleri genellikle okuma veya yazılmış bir birimde s ve başvuru çoğu deyimleri tablo bu tür verilerin başvurun.Kullanımı veya iş yükünü özelliklere bağlı olarak satır için veri depolama yararlı olmayabilir.

Önemli notÖnemli

The text in row option will be removed in a future version of SQL Server.Bu seçenek yeni geliştirme çalışması kullanmaktan kaçının ve şu anda kullanan uygulamaları değiştirmek plan satırındaki metin.Kullanarak büyük miktarda veri depolamak öneririz varchar(max), nvarchar(max), veya varbinary(max) veri türü.Bu veri türleri, satır ve satır dışı davranışını denetlemek için kullanın büyük bir değer türü satır seçeneği.

Sürece satırındaki metin seçenek küme on ya da belirli bir satır sınır text, ntext, veya image dizeleridir geniş karakter veya ikili dize (en çok 2 gigabayt) dışında depolananbir veri satırı. Yalnızca iç işaretçileri yerleşik bir ağaç kök düğüme işaret eden bir 16 baytlık metin imleci veri satırı içerir.Bu işaretçileri dize parçaları saklandığı sayfalarını eşleştirir.Depolama hakkında daha fazla bilgi için text, ntext, veya image dizeleri, bakın Metin ve resim veri kullanma.

Yapabilirsiniz küme bir satırındaki metin seçeneği içeren lob veri türü sütunlarındaki tablolar için.Ayrıca belirtebilirsiniz bir satırındaki metin 24'ten 7,000 bayt seçeneğini sınırı.

Benzer şekilde, sürece büyük bir değer türü satır seçenek küme açık, varchar(max), nvarchar(max), varbinary(max), ve xml sütunları saklanır, Yapılabiliyorsa, içinde veri satırı.Bu durumda ise SQL Server Veritabanı Altyapısı olabilir ve olacaktır, belirli değer sığdırmaya çalışır gönderme değerini off-satır otherwise.If large value types out of row is set to ON, the values are stored off-row and only a 16-byte text pointer is stored in the record.

Not

Büyük değer veri türleri için en fazla satır depolama 8.000 bayt için küme, büyük bir değer türü satır kapalı'dır.Aksine satırındaki metin seçeneği, sütunlarda satır sınırı belirtemezsiniz tablo.

Büyük bir değer türleri ya da büyük nesne veri türleri doğrudan veri satırında depolamak için bir tablo yapılandırıldığında, gerçek sütun değerlerini, aşağıdaki koşullardan biri doğruysa satır olacaktır:

  • Uzunluğu dize için belirtilen sınırdan daha kısadır text, ntext, ve image sütunlar.

  • Dize tutmak için veri satırı kullanılabilir yeterli alan yok.

Büyük bir değer yazın veya bir büyük nesne veri türü sütun değeri veri satırda depolanan Veritabanı Altyapısı ayrı bir sayfaya erişmek zorunda değildir veya küme sayfalar okuma veya yazma karakter veya ikili dize.Bu okuma ve yazma boyutu sınırlı okuma veya yazma gibi yaklaşık olarak hızlı satır dizeleri yapar varchar, nvarchar, veya varbinary dizeleri.Benzer şekilde, ne zaman değerlerde saklı off-satır, Veritabanı Altyapısı çeker bir ek sayfa okuma veya yazma.

Büyük nesne veri türleri, dize uzunsa satırındaki metin seçenek sınırı veya satır küme işaretçi ağacının kök düğümü depolanan başka türlü işaretçiler, kullanılabilir alana satır içinde saklanır.Aşağıdaki koşullardan biri doğruysa bir satırın işaretçiler saklanır:

  • İşaretçiler depolamak için gereken alan miktarını belirtilen dönemden kısa satırındaki metin sınırı seçeneği.

  • İşaretçiler tutmak için veri satırı kullanılabilir yeterli alan yok.

İşaretçiler satır kendisini, kök düğümünden taşındığında Veritabanı Altyapısı sahip değil kullanma bir kök düğüm.Bu okuma veya yazma dize bir sayfa erişimi çıkarabilirsiniz.Bu, performansı artırır.

Kök düğümler kullanıldığında, bir lob dize parçalarında biri olarak saklandıkları sayfa ve beş adede kadar dahili işaretçiler içerir.The Veritabanı Altyapısı needs 72 bytes of space in the row to store five pointers for an in-row string.İşaretçiler tutmak için satır alanı yetersiz olup olmadığını, satırındaki metin seçenektir on veya büyük bir değer türü satır seçenek, kapalı, Veritabanı Altyapısı bunları tutmak için bir 8-k sayfa ayırmak zorunda kalabilirsiniz.40,200 Bayt değerinin veri uzunluğunu aşarsa, beşten fazla satır işaretçiler, hangi noktası yalnızca 24 bayt ana satırda depolanan gereklidir ve ek veri sayfa üzerinde lob depolama alanı tahsis edilir.

Büyük veri dizeleri bir satırın depolandığında, değişken uzunluklu dizelere benzer biçimde depolanır.The Veritabanı Altyapısı sorts columns in decreasing size order and pushes values off-row until the remaining columns fit in the data page (8K).

Büyük bir değer türü satır seçeneği devre dışı bırakma ve etkinleştirme

Etkinleştirmek büyük bir değer türü satır seçeneğini kullanarak bir tablo için sp_tableoption şu şekilde:

sp_tableoption N'MyTable', 'large value types out of row', 'ON'

off, içinde satır sınırı belirtmek varchar(max), nvarchar(max), varbinary(max), ve xml sütunları olan küme 8.000 bayt. için16 Baytlık kök işaretçiyi satır içinde saklı olan ve lob depolama alanı değeri saklanır.Bu seçenek çoğu deyimleri büyük bir değer türleri sütunlar başvurmadığından tablolar için on olarak ayarlanması önerilir.Bu sütunları çıkış satır depolanması anlamına gelir daha fazla satır başına uygun olduğunu sayfa, bu nedenle tablo taramak için gereken g/Ç işlemlerinin sayısını azaltır.

Bu seçenek değeri ile küme için kapalı, birçok dizeleri büyük olasılıkla her sayfaya veri satır sayısını azaltarak satır kendisini, depolanan bitirebilirsiniz.Tablo başvuru çoğu deyimleri erişim varchar(max), nvarchar(max), varbinary(max), ve xml sütunlar, sayfa satırları azalan artırmak sayfaları, gerekir okumak için işlem sorguları.Sayfa başına satır azaltılması, olabilecek en iyi duruma getiricisi dizin kullanılabilir bulursa taranacak sayfa sayısını artırabilirsiniz.

Ayrıca sp_tableoption satır çıkış seçeneği devre dışı bırakmak için:

sp_tableoption N'MyTable', 'large value types out of row', 'OFF'

Var olan, ne zaman satır seçeneği değeri dışında büyük bir değer türleri değişmiş varchar(max), nvarchar(max), varbinary(max), ve xml değerler değil hemen dönüştürülür.Sonradan güncelleştirildikçe depolama dizeleri değiştirilir.Bir tabloya eklenen yeni değerleri tablo seçeneğe göre yürürlükte saklanır.

Değerini incelemek için büyük bir değer türü satır seçenek için belirli bir tablo, sorgu large_value_types_out_of_row sütun , sys.tables Katalog görünümü.Tablo yoksa, bu sütun sıfırdır büyük bir değer türü satır etkin ve büyük bir değer türü satır dışında depolanır, 1.

Satır seçeneği metni devre dışı bırakma ve etkinleştirme

Etkinleştirmek satırındaki metin seçeneğini kullanarak bir tablo için sp_tableoption şu şekilde:

sp_tableoption N'MyTable', 'text in row', 'ON'

İsteğe bağlı olarak, 24'ten 7,000 bayt olarak uzunluğu için bir üst sınır belirleyebilirsiniz bir text, ntext, ve image veri satırda depolanan dize:

sp_tableoption N'MyTable', 'text in row', '1000'

Varsayılan on yerine belirli bir sınır belirlediğiniz sınırı için 256 bayt kullanır.Bu varsayılan değeri çoğunu kullanarak kazanılan performans avantajları sağlayan satırındaki metin seçeneği.Genellikle olmaması gerektiği halde küme 72'den daha düşük değer, siz de gerektiği halde küme değeri çok büyük.Bu özellikle, çoğu deyimleri değil başvuru tabloları için geçerlidir text, ntext, ve image sütunları; ya içinde birden çok text, ntext, ve image sütunlar.

Varsa, küme büyük bir satırındaki metin sınır ve birçok dizeleri satır içinde saklanır, her sayfaya veri satır sayısını önemli ölçüde azaltabilirsiniz.Tablo başvuru çoğu deyimleri erişim text, ntext, veya image sütunlar, sayfa satırları azalan artırmak sayfaları, gerekir okumak için işlem sorguları.Sayfa başına satır azaltma dizinler ve kullanılabilir bir dizin yok iyileştirici bulursa, taranacak olabilir sayfaları boyutunu artırabilirsiniz.Varsayılan değer için 256 satırındaki metin sınırı küçük dizeleri ve kök metin işaretçiler satırda depolanan ancak bu nedenle büyük o BT performansını etkiler için yeterince sayfa başına satır azaltır emin olmak için büyük.

The text in row option is automatically set to 256 for variables with a table data type and for tables returned by user-defined functions that return a table.Bu ayar değiştirilemez.

Ayrıca sp_tableoption ya da bir seçenek değeri belirterek seçeneği devre dışı bırakmak için off veya 0:

sp_tableoption N'MyTable', 'text in row', 'OFF'

Değerini incelemek için satırındaki metin seçenek için belirli bir tablo, sorgu text_in_row_limit sütun , sys.tables Katalog görünümü.Tablo yoksa, bu sütun sıfırdır satırındaki metin etkin ve bir değer, satır sınırı, 0'dan büyük olmuştur küme.

Satır seçeneği metni kullanarak etkileri

The text in row option has the following effects:

  • Etkinleştirdiğiniz sonra satırındaki metin seçeneğini kullanarak textptr, readtext, updatetext veya WRITETEXT deyimleri okumak veya herhangi bir parçalarını değiştirmek için text, ntext, veya image değer saklanan tablo.select ifadelerine bütün okuyabilirsiniz text, ntext, veya image , dize veya kullanım alt DİZE işlev okumak bölümlerini dize.Tümünü Ekle veya tablo başvurusu update deyimiyle tam dizelerin belirtmeniz gerekir ve yalnızca bir kısmı değiştirilemez bir text, ntext, veya image dize.

  • Zaman satırındaki metin seçeneği ilk kez etkinleştirildiğinde, varolan text, ntext, veya image dizeleri değil hemen dönüştürülür, satır dizeler.Dizeler içindeki dizeleri yalnızca bunlar sonradan güncelleştirilmişse, satır dönüştürülür.Tüm text, ntext, veya image dize eklenen sonra satırındaki metin seçeneği etkin bir satır dize olarak eklenir.

  • Devre dışı bırakma satırındaki metin seçeneği, uzun süre çalışan, günlüğe kaydedilen bir işlem olabilir.Tablo kilitli ve tüm içinde satır text, ntext, ve image dizeleri dönüştürülür normal text, ntext, ve image dizeleri.Uzunluğu saat komutunu çalıştırmalısınız ve değiştirilen veriler üzerinde kaç bağlıdır text, ntext, ve image dizeleri dönüştürülmesi, satır içinde dizelerden normal dizeler.

  • The text in row option does not affect the operation of the SQL Server Native Client OLE DB Provider or the SQL Server Native Client ODBC driver, other than to speed access to the text, ntext, and image data.

  • db Kitaplığı metin ve resim İşlevler, gibi dbreadtext ve dbwritetext, sonra tablo kullanılamaz satırındaki metin seçeneği etkin.

Ayrıca bkz.

Kavramlar

Diğer Kaynaklar