View Full Version : سوال: دیتابیس چند فایلی و بک آپ
پرواز
سه شنبه 15 آبان 1386, 02:06 صبح
سلام.
من یه دیتابیس دارم که حجم عکسها وفایلهایی که توش ذخیره میشه زیاده و باعث شده که دیتابیس سنگین بشه. می خواستم ببینم میشه جوری طراحیش کرد که جداولی که شامل عکس هستن رو تو یکی از فایلهای دیتابیس ذخیره کرد که موقع بک آپ گیری ازشون بک آپ نگیرم؟ یا مثلا تاریخ بک آپ گیری از اون رو طولانی تر بذارم؟
AminSobati
سه شنبه 15 آبان 1386, 20:21 عصر
دوست عزیزم،
نه تنها جداول، بلکه فیلدهای خاصی رو (Large Objects) میتونین از جدول اصلی جدا کنین و روی فایلهای دیگه قرار بدین. این کار توسط Filegroupها انجام میشه. امیدوارم نخواین یکی براتون اینجا Filegroupها رو تشریح کنه! لطفا مطالعه لازم رو در Books Online بفرمایید، بعد اگر سوالی وجود داشت پست کنین. بعد از ساختن Filegroupهای مورد نیاز، میتونین جداول رو به این شکل تقسیم کنین روی FG1 و FG2:
CREATE TABLE Students(
ID INT,
LastName NVARCHAR(100),
Picture IMAGE,
Description NTEXT) ON FG1 TEXTIMAGE_ON FG2
در این مثال، دو فیلد اول روی FG1 و دو فیلد آخر روی FG2 قرار میگیرند
پرواز
سه شنبه 15 آبان 1386, 22:19 عصر
ممنونم آقای ثباتی.
لطف کردین. در مورد Filegroupها هم چشم. خودم تحقیق می کنم.
پرواز
پنج شنبه 17 آبان 1386, 05:58 صبح
یه سوال:
تو مثال آقای ثباتی راهی وجود داره که بگیم مثلاً یک فیلد رو تو FG1 ذخیره کن و سه فیلد رو تو FG2 ؟
یا اینکه خود SQL SERVER عمل تقسیم فیلدها رو انجام میده؟
و یا اینکه اگه دیتابیس ما بیشتر از دوفایل داشت و خواستیم یک جدول رو در بیشتر از دوفایل ذخیره کنیم چیکار کنیم؟
mhadvi_mahmaood
پنج شنبه 17 آبان 1386, 10:30 صبح
یه سوال:
تو مثال آقای ثباتی راهی وجود داره که بگیم مثلاً یک فیلد رو تو FG1 ذخیره کن و سه فیلد رو تو FG2 ؟
یا اینکه خود SQL SERVER عمل تقسیم فیلدها رو انجام میده؟
و یا اینکه اگه دیتابیس ما بیشتر از دوفایل داشت و خواستیم یک جدول رو در بیشتر از دوفایل ذخیره کنیم چیکار کنیم؟
میشه lob رو جدا کرد ولی تک تک فیلد ها رو نه. مثلا" میشه بگیم عکسها و متنها و .. که حجمشون بالاست توی یک FG باشد و بافی فیلدها(نمیشه جداشون کرد) توی یک FG دیگه.
شما FG رو مشخص میکنید و باقی کار ها بر عهده خود sql server هستش. شما میتونید یک FG ایجاد کنید که حاوی چند فایل باشه و مشخص کنید که کدوم جدوال روی این FG باشند. در این صورت شما جدولتون رو روی بیش از یک فایل ذخیره کردید ولی نمیتونید بگید که روی کدم فایل ذخیره بشه
پرواز
جمعه 18 آبان 1386, 02:12 صبح
میشه lob رو جدا کرد ولی تک تک فیلد ها رو نه. مثلا" میشه بگیم عکسها و متنها و .. که حجمشون بالاست توی یک FG باشد و بافی فیلدها(نمیشه جداشون کرد) توی یک FG دیگه.
شما FG رو مشخص میکنید و باقی کار ها بر عهده خود sql server هستش. شما میتونید یک FG ایجاد کنید که حاوی چند فایل باشه و مشخص کنید که کدوم جدوال روی این FG باشند. در این صورت شما جدولتون رو روی بیش از یک فایل ذخیره کردید ولی نمیتونید بگید که روی کدم فایل ذخیره بشه
ممنونم.
خوب چطور می تونیم بگیم اونایی که حجمشون بالاست رو تو یه FG دیگه بذار؟ یعنی تمایز فیلدهای با حجم پایین و حجم بالا چطور انجام میشه؟
mhadvi_mahmaood
جمعه 18 آبان 1386, 10:41 صبح
اینگونه فیلدها دارای دیتاتایپ مشخص و محدودی هستند مثل:
کارکتری:
Text
NText
varchar(max)
Nvarchar(Max)
باینری
Image
Varbinary(max)
فکر کنم XML هم باشه
پرواز
جمعه 18 آبان 1386, 15:40 عصر
من بالاخره متوجه نشدم SQL میاد فیلدهای با دیتاتایپ خاص رو تو FG دوم ذخیره می کنه یا میاد مثل مثال آقای ثباتی به دو قسمت تقسیم می کنه و دوتای اول رو در FG1 و دوتای دوم رو در FG2 قرار میده؟
اگه یکی منطقش رو توضیح بده ممنون میشم.
AminSobati
جمعه 18 آبان 1386, 23:51 عصر
فیلدی که از جنسهای نامبرده در پست هفتم باشه، چنانچه از عبارت TEXTIMAGE_ON در ساخت جدول استفاده کرده باشین، به Filegroupی منتقل میشه که بعد از TEXTIMAGE_ON قید کردین.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.