ورود

View Full Version : پیدا کردن حجم یک رکورد



ariobarzan
شنبه 10 مهر 1389, 20:48 عصر
ببخشید که عنوان تاپیک ناجوره:لبخند::لبخند::لبخند:
تو یکی از برنامه ها که برای یه سازمان نوشتم , کاربر میتونه برای قرار دادن عکس پرسنلی از چند روش اسکن عکس و یا استفاده از فایل تصویری و یا وب کم استفاده کنه
متاسفانه اقدامات کنترلی برای حجم عکس رو انجام ندادم و الان بعد از یک سال حجم دیتا بیش تر از 5 گیگ شده که مطمئن هستم اشکال از همین فیلد عکس هست
البته اکثر تصاویر به گفته کاربران حجم کم داشتند ولی تعدادی هم با حجم بالا و یا کیفیت بالای اسکنر وارد دیتا بیس شدند
حالا من میخوام رکورد هایی که باعث این حجم زیاد شدند رو از دیتابیس حذف کنم تا حجم هم کم بشه . بهترین راه حل چیه؟:متفکر:
در سازمان دیگر با تعداد تقریبی رکورد یکسان ولی با کنترل حجم تصویر ، حجم دیتا بیس یک و نیم گیگ هست.:افسرده:

tdkhakpur
شنبه 10 مهر 1389, 20:56 عصر
حالا من میخوام رکورد هایی که باعث این حجم زیاد شدند رو از دیتابیس حذف کنم تا حجم هم کم بشه . بهترین راه حل چیه؟

با حذف رکورد حجم کاهش پیدا نمیکنه فقط رکورد مورد نظر از لیست ایندکسها خارج میشه.
بهترین راه ایجاد الگوریتم ساده برای کپی داده های قبلی به جدول جدید و جایگزینی جدول جدید به جای جدول جاری میتونه باشه.
از چه بانکی استفاده میکنی؟

ariobarzan
یک شنبه 11 مهر 1389, 07:16 صبح
ممنون از توجه شما
بانك sql

BORHAN TEC
یک شنبه 11 مهر 1389, 12:16 عصر
خوب یک کار دیگه بکن!!! :متفکر:
یک برنامه بنویس که عکس ها رو دونه به دونه از دیتابیس لود کند و سپس حجم آن را کم کند(مثلاً اگر ابعاد عکسی از اندازه تعیین شده بیشتر بود ابعاد آن را کوچک کند و سپس آنرا در دیتابیس بازنویسی کند). با این کار مشکل حل میشه!!! :لبخند:

ariobarzan
چهارشنبه 14 مهر 1389, 08:05 صبح
ولي دوستمون Tdkhakpour گفتند كه حتي با حذف ركورد هم حجم بانك كم نميشه

ariobarzan
پنج شنبه 22 مهر 1389, 14:14 عصر
دوستان کسی نظری نداره؟
:افسرده::ناراحت:

vcldeveloper
جمعه 23 مهر 1389, 00:26 صبح
ولي دوستمون Tdkhakpour گفتند كه حتي با حذف ركورد هم حجم بانك كم نميشه
همچین چیزی نیست، مگه اینکه همچنان از دیتابیس های قرون وسطی استفاده کنید! در موتورهای بانک اطلاعاتی امروزی، مثل SQL Server میتونید رکوردها را به صورت فیزیکی حذف کنید. البته در اکثر مواقع، نیازی نیست که خودتان مستقیما این کار را بکنید، و موتور بانک اطلاعاتی خودش به طور خودکار، هر زمان که نیاز شد، فضای اشغال شده توسط رکوردهای حذف شده از بانک را آزاد میکنه.

tdkhakpur
جمعه 23 مهر 1389, 11:23 صبح
همچین چیزی نیست، مگه اینکه همچنان از دیتابیس های قرون وسطی استفاده کنید! در موتورهای بانک اطلاعاتی امروزی، مثل SQL Server میتونید رکوردها را به صورت فیزیکی حذف کنید. البته در اکثر مواقع، نیازی نیست که خودتان مستقیما این کار را بکنید، و موتور بانک اطلاعاتی خودش به طور خودکار، هر زمان که نیاز شد، فضای اشغال شده توسط رکوردهای حذف شده از بانک را آزاد میکنه.

نه اینطور که میگید نیست!!
با توجه به مطالبی که ارسال کرید باید عملیات به این صوزت باشه یعنی وقتی شما داده هایی را مثلا یه طول 1064 بایت در اواسط بانک داده تان اضافه میکنید بانک اطلاعاتی میاد و این داده های بعدی را شیفت میده تا این داده های بطور فیزیکی حذف بشن؟!!!عمرا امکان نداره!!

ولي دوستمون Tdkhakpour گفتند كه حتي با حذف ركورد هم حجم بانك كم نميشه
در حالت کلی و الگوریتم ساختاری دیتابیسها منظور از حذف فیزیکی این نیست که داده ها از روی هارد پاک بشه منظور اینه که رکورد از دید موتور جستجو و بانک اطلاعاتی حذف میشه این فضا با توجه به فلاگی جهت شناسایی جای خالی می مونه تا جایی برای رکوردهای جدید باشه.
irdataBase زیربنای بانکهای اطلاعاتی (http://barnamenevis.org/forum/showthread.php?t=240356&highlight=%D8%B2%DB%8C%D8%B1%D8%A8%D9%86%D8%A7%DB% 8C+%D8%A8%D8%A7%D9%86%DA%A9%D9%87%D8%A7%DB%8C+%D8% A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C)

vcldeveloper
شنبه 24 مهر 1389, 00:29 صبح
با توجه به مطالبی که ارسال کرید باید عملیات به این صوزت باشه یعنی وقتی شما داده هایی را مثلا یه طول 1064 بایت در اواسط بانک داده تان اضافه میکنید بانک اطلاعاتی میاد و این داده های بعدی را شیفت میده تا این داده های بطور فیزیکی حذف بشن؟!!!عمرا امکان نداره!!
مگه الان که شما فایلی رو از روی هارد دیسک حذف می کنید، سیستم عامل سایر فایل ها را شیفت میده تا اون فضا را پر کنند؟! موتور بانک اطلاعاتی تصمیم میگیره که از فضای مربوط به اون رکورد حذف شده چطور استفاده کنه. میتونه مثل فایل سیستم عمل کنه، و اون فضا را مارک کنه، و رکورد جدیدی کاربر ایجاد میکنه را در آن فضای مارک شده درج کنه، تا از آن فضا استفاده کنه. در هر حال اینطور نیست که حجم بانک های اطلاعاتی امروزی همیشه به صورت صعودی افزایش پیدا کنه، و رکوردی به صورت فیزیکی حذف نشه؛ بلکه موتور بانک اطلاعاتی سعی میکنه در زمان مناسب، از فضای مربوطه استفاده کنه.

tdkhakpur
شنبه 24 مهر 1389, 12:55 عصر
مگه الان که شما فایلی رو از روی هارد دیسک حذف می کنید، سیستم عامل سایر فایل ها را شیفت میده تا اون فضا را پر کنند؟!

بحث رو فایل نیست, روی قسمتی از داده های فایله!!

در هر حال اینطور نیست که حجم بانک های اطلاعاتی امروزی همیشه به صورت صعودی افزایش پیدا کنه، و رکوردی به صورت فیزیکی حذف نشه؛ بلکه موتور بانک اطلاعاتی سعی میکنه در زمان مناسب، از فضای مربوطه استفاده کنه.
خب ما هم که همین رو گفته بودیم!!