Aracılığıyla paylaş


Satır veri

Küçük ve orta ile büyük değere (türlerivarchar(max), nvarchar(max), varbinary(max), ve xml) ve büyük bir nesne (LOB) veri türleri ()text, ntext, ve image) bir veri satırında depolanabilir. Bu davranış, iki Seçenekleri'ni kullanarak denetlenir sp_tableoption sistem saklı yordamı: the büyük bir değer türü satır büyük bir değer türleri ve seçeneğiSatır metni seçeneği büyük nesne türleri için.Bu seçenekler, tablo içinde bu veri türlerinden biri veri değerleri genellikle okunamıyor veya bir birimde yazılan s ve başvuru çoğu deyimleri için en iyi şekilde kullanılır tablo bu tür bir veri bakın.Kullanım ya da iş yükünü özelliklerine bağlı olarak, satır için veri depolama yararlı olabilir.

Important noteImportant Note:

The text in row option will be removed in a future sürüm of SQL Server. Bu seçenek yeni geliştirme iş kullanmaktan kaçının ve şu an kullanan uygulamalar değiştirmek planlama Satır metni.Kullanarak büyük miktarda veri depolamanız önerilir varchar(max), nvarchar(max), veya varbinary(max) veri türleri. Bu veri türleri, satır ve satır çıkış davranışını denetlemek için kullanmak büyük bir değer türü satır seçeneği.

Sürece Satır metni seçeneği, açık veya belirli bir de satır sınırı olan küme.text, ntext, veya image geniş bir karakter ya da veri satırı dışında depolanan ikili dize (en çok 2 gigabayt) dizeleridir. Verileri satır, yalnızca iç işaretçileri yerleşik bir ağaç kök düğüme gösteren 16 baytlık metin işaretçi içerir.Bu işaretçileri dize parçaları saklandığı sayfalarını eşleştirir.Daha fazla bilgi için depolama hakkında text, ntext, veya image dizeleri için bkz: Metin ve resim veri kullanma.

Yapabilecekleriniz küme bir Satır metni seçeneği LOB veri türü sütunlarındaki içeren tablolar.Ayrıca belirtebilirsiniz bir Satır metni seçeneği sınırı, 7,000 bayt ile 24 arasında.

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 Mümkünse, içinde veri satırı sütun depolanır. Bu, durumda SQL Server Database Engine seçebilirsiniz ve devre dışı-satır değeri yoksa gönderme, belirli bir değeri sığdırmaya çalışır. If büyük bir değer türü satır olduğu küme ON, satır kapalı saklı değerlerdir ve yalnızca bir 16-bayt metin imleci kayıtta depolanır.

Not

Büyük bir 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.Farklı Satır metni seçeneği, tablodaki sütun, satır sınırı belirtemezsiniz.

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

  • Dizenin uzunluğu için belirtilen sınırdan daha kısa olur. text, ntext, ve image sütunlar.

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

Bir büyük bir değer türü veya veri satırında depolanan veri türünü sütunun değeri, büyük bir nesne Database Engine ayrı bir sayfa ya da okuma veya karakter ya da ikili dize bir sayfalar küme. Bu, okuma ve satır dizeleri, sınırlı boyut yazma veya okuma hakkında hızlı yazma sağlar varchar, nvarchar, veya varbinary strings. Benzer şekilde, değerleri saklı devre dışı-satırı olan Database Engine bir ek sayfa okuma veya yazma çeker.

Büyük nesne veri türleri, dize uzunsa Satır metni seçeneği sınırı veya kullanılabilir alanı, işaretçiyi ağacının kök düğümü depolanan başka bir işaretçi kümesi satırda, satır içinde depolanır.Aşağıdaki koşullardan biri doğruysa, işaretçileri satır saklanır:

  • Işaretçileri depolamak için gereken alanı belirtilen dönemden kısa olur. Satır metni seçeneği sınırı.

  • Işaretçileri tutmak için veri satırında yeterli alan yok.

Işaretçiler, satır, kök düğümünden taşındığında Database Engine bir kök düğümü kullanmanız gerekmez. Bu, bir sayfa erişim okuma ya da dize yazma ortadan kaldırabilirsiniz.Bu, performansı artırır.

Kök düğümler kullanıldığında, bir LOB içinde dize parçaları olarak saklandıkları sayfa ve en çok beş iç işaretçiler içerir.The Database Engine needs 72 bytes of space in the row to store five pointers for an in-row dize. Satırda işaretçileri tutmak için yeterli alan olup olmadığını, Satır metni seçeneği AÇıK olan veya büyük bir değer türü satır KAPALı, seçenektirDatabase Engine bunları saklamak için bir 8 K sayfa ayırmaya olabilir. 40,200 Bayt değerinin veri uzunluğu aşıyor, beşten çok satır işaretçileri, hangi noktası yalnızca 24 bayt ana satırda depolanan en gereklidir ve bir ek veri sayfa LOB depolama alanı ayrılır.

Büyük dizeleri satırda depolandığında, benzer şekilde, değişken uzunluklu dizelere depolanır.The Database Engine sorts columns in decreasing size order and pushes values off-row until the remaining columns uyma in the data sayfa (8K).

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

Etkinleştirmek büyük bir değer türü satır kullanarak bir tablo seçeneğisp_tableoption aşağıdaki şekilde:

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

KAPALı,-satır sınırı belirtirseniz varchar(max), nvarchar(max), varbinary(max), ve xml sütunları 8.000 bayt olarak küme. Yalnızca 16 baytlık kök işaretçi satır içinde depolanmış olan ve değeri LOB depolama alanı olarak saklanır.Bu seçenek, çoğu ifadeleri büyük bir değer türleri sütunları başvuru olmayan tablolar için ON olarak ayarlanması önerilir.Daha fazla satır olabilir bu sütunları çıkış,-satır depolamak anlaşılacağı uyma her sayfa, bu nedenle, tablo taramak için gereken g/Ç işlemlerinin sayısını azaltma.

Bu seçeneğin değeri ile küme için OFF, birçok dizeleri büyük olasılıkla her sayfa sığan verileri satır sayısını azaltarak satır, depolanan son.Tablo başvuru çoğu ifadeleri değil erişirseniz varchar(max), nvarchar(max), varbinary(max), ve xml sütun, bir çalışma sayfasındaki satırları azalan sorgularını okumak zorunda sayfaları artırabilirsiniz. Sayfa başına satır azaltma olabilecek en iyi duruma getiricisi için kullanılabilir hiçbir dizin 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'

Varolan, büyük bir değer, satır seçenek değeri ne zaman türleri değişti varchar(max), nvarchar(max), varbinary(max), ve xml değerleri hemen dönüştürülmez. Daha sonra güncelleştirilen gibi depolama dizelerin değiştirilir.Tabloya eklenen yeni değerleri göre Tablo seçeneği etkin depolanır.

Değerini incelemek için büyük bir değer türü satır Belirli bir tablo seçeneğini sorgulalarge_value_types_out_of_row sütunsys.Tables kataloğunu görüntüleyin.Tablo yoksa, bu sütunun 0'dır büyük bir değer türü satır etkin ve büyük bir değer türleri dışında satır depolanmışsa, 1.

Etkinleştirme ve Satır seçeneği metin devre dışı bırakma

Etkinleştirmek Satır metni kullanarak bir tablo seçeneğisp_tableoption aşağıdaki şekilde:

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

7,000 Bayt olarak uzunluğu ile 24 arasında bir üst sınır, isteğe bağlı olarak belirtebileceğiniz bir text, ntext, ve image depolanan bir veri satırı dizesi:

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

ON yerine belirli bir sınır belirttiğiniz sınırı 256 bayt için varsayılan kullanılır.Bu varsayılan değeri, kullanarak kazanılan performans üstünlüklerinden çoğunu sağlar Satır metni seçeneği.Genellikle 72 tutardan ayarladığınızda değil, ancak de değeri çok yüksek bir değere ayarlamanız gerekir değil.Bu özellikle, çoğu ifadeleri değil başvuru için tabloları da geçerlidir text, ntext, ve image sütun veya içinde birden çok text, ntext, ve image sütunlar.

Varsa, küme büyük Satır metni sınırı ve çok sayıda dizeleri satır içinde saklanır, her bir sayfa veri satır sayısını önemli ölçüde azaltabilirsiniz.Tablo başvuru çoğu ifadeleri değil erişirseniz text, ntext, veya image sütun, bir çalışma sayfasındaki satırları azalan sorgularını okumak zorunda sayfaları artırabilirsiniz. Sayfa başına satır azalan dizinleri ve kullanılabilir bir dizin yok iyileştirici bulursa, taranacak olabilecek sayfa boyutunu artırabilirsiniz.Varsayılan değer için 256 Satır metni küçük dizeler ve kök metin işaretçileri satırlardaki depolanmış, ancak değil bu nedenle büyük performansı etkileyen için yeterince sayfa başına satır olarak azaltır olabileceğini emin olmak için yeterli büyüklükte sınırıdır.

The text in row option is automatically küme to 256 for variables with a tablo data type and for tables returned by user-defined functions that return a tablo.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çinKapalı or 0:

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

Değerini incelemek için Satır metni Belirli bir tablo seçeneğini sorgulatext_in_row_limit sütunsys.Tables kataloğunu görüntüleyin.Tablo yoksa, bu sütunun 0'dır Satır metni etkin ve içindeki satır sınırı ayarlarsanız, 0'dan büyük bir değer.

Metin satırında seçeneği kullanılarak etkileri

The text in row option has the following effects:

  • Etkinleştirdiğiniz sonra Satır metni seçeneği, okuma veya tüm bölümlerini değiştirme TEXTPTR, READTEXT UPDATETEXT veya WRITETEXT deyimlerini kullanabilirsiniztext, ntext, veya image saklanan değer tablo. SELECT deyimi tüm okuyabilir. text, ntext, veya image dize ve dizenin bölümleri okunamıyor SUBSTRING işlevini kullanın. Tüm INSERT veya tabloya başvuruda UPDATE deyimleri tam dizeleri belirtmeniz gerekir ve yalnızca bir parçasını değiştiremezsiniz bir text, ntext, veya image Dize.

  • Zaman Satır metni seçeneği önce varolan etkinleştirilirtext, ntext, veya image dizeleri, hemen satır dizeleri için dönüştürülmez. Dizelerin içinde dize yalnızca sonradan güncelleştirilmeden, satır dönüştürülür.Tüm text, ntext, veya image dize, sonra eklenen Satır metni seçeneği etkinleştirilmiş bir de satır dize eklenir.

  • Devre dışı bırakılması Satır metni seçeneği, uzun süredir çalışan'ı, kütüğe kaydedilmiş bir işlem olabilir.Tablo kilitli ve tümü de satır text, ntext, ve image Dizeler için normal dönüştürülür. text, ntext, ve image strings. Süreyi komutu çalıştırmalısınız ve değiştirilen veriler üzerinde kaç bağlıdır text, ntext, ve image dize-satır dizelerden normal dizeleri dönüştürülmesi gerekir.

  • The text in row option does not affect the operation of the SQL Server Native istemci OLE DB sağlayıcı or the SQL Server Native istemci ODBC driver, other than to speed access to the text, ntext, and image data.

  • DB Kitaplığı metin ve görüntü işlevleri, gibi dbreadtext and dbwritetext sonra tablo kullanılamazSatır metni seçeneği etkinleştirildi.