PDA

View Full Version : حرفه ای: یک سرور با یک دیتابیس که روزی 3 میلیون رکورد توش Insert میشه



Javad_raouf
پنج شنبه 09 شهریور 1396, 16:56 عصر
سلام دوستان
بانک اطلاعاتیمون SQL و محیط برنامه نویسی سی شارپ هست
یک خدماتی قراره از طریق وب سرویس به مشتریان ارائه بدیم
مشتری با وب سرویسی که داره در طول روز چندین رکورد توی دیتابیس ما ثبت می کنه
که در مجموع همه مشتریان تقریبا روزی 3 میلیون رکورد Insert می کنند
هر رکورد حداکثر 1 کیلوبایت حجم داره که میشه روزی 3 گیگ اطلاعات
بعد هر مشتری از این اطلاعاتی که امروز ذخیره کرده گزارش هم می خواد یعنی ترافیک سرور ممکنه 3 گیگ نباشه بلکه 6 گیگ یا 9 گیگ در روز باشه
البته ناگفته نماند این گزارشات گزارشات پیچیده نیست و یک Select ساده است.
اگر بخوایم این اطلاعات رو نگه داریم برای یک سال باید حداقل 1 ترابایت حافظه روی سایتمون داشته باشیم
تازه معلوم نیست اصلا SQL Server بتونه این همه رکورد رو ذخیره کنه و بدون مشکل گزارش بده


ولی خوبی کار ما اینه که داده ها رو فقط تا سه چهار روز نیاز داریم و می تونیم داده های قدیمی رو حذف کنیم یعنی در هر لحظه حداکثر چیزی حدود 12


میلیون رکورد در دیتابیس داریم


با این اوصاف دوستانی که تخصص و تجربه دارن لطفا نظرشون رو روی این موضوعات بدن:


1. اولا SQL Server اصلا توانایی این کار رو داره؟ با توجه به اینکه ما گزارشات پیچیده ای نداریم فقط کوئری های ساده ای داریم
2. دوما به نظر شما بهتره سرور اینترنتی بگیریم یا یک سرور فیزیکی با اینترنت پر سرعت و آی پی استاتیک بگیریم؟
3. بعد از حذف داده های توی SQL نه تنها حجم فایل کم نمیشه بلکه حجم فایل LOG اضافه هم میشه. در مرد Shrink می دونم فقط می خوام بدونم اینکه


دیتابیس رو بزارم روی AutoShrink حله دیگه؟ یعنی با این تعداد Insert و Delete به مرور زمان حجم فایل دیتابیس رو به افزایش نمیره؟


من تجربه این همه دیتا رو توی هیچ کدوم از پروژه هام تاحالا نداشتم پس خواهش می کنم دوستانی که تجربه دارند غیر از این سه سوال هر نکته دیگه ای


هم به ذهنشون می رسه بگن


یا علی

FastCode
پنج شنبه 09 شهریور 1396, 17:51 عصر
چه نوع اطلاعاتی هستند؟ چه نوع گزارشی؟
آیا میتونید single-pass گزارش بگیرید؟
اگر میتونید, اصلا نیازی به حذف اطلاعات قدیمیتون نیست.

code یا execution plan از گزارشاتتون بزارید

Javad_raouf
یک شنبه 12 شهریور 1396, 16:16 عصر
چه نوع اطلاعاتی هستند؟ چه نوع گزارشی؟
آیا میتونید single-pass گزارش بگیرید؟
اگر میتونید, اصلا نیازی به حذف اطلاعات قدیمیتون نیست.

code یا execution plan از گزارشاتتون بزارید
اطلاعات بیشتر Nvarchar هست و اصلا مهم هم نیست
یک جدول اصلی هم بیشتر نداریم
گزارش خاصی هم نداریم فقط یک Select از همین جدول اصلی اونم نه یک کوئری عجیب و قریب بلکه فقط جهت مشاهده اطلاعات یک Select ساده که مثلا بگه از آی دی فلان تا فلان رو نشون بده
در مورد
single-pass هم اگر امکانش هست توضیح بدید من اصلا نمی دونم چیه
در مورد این که کار چیه و دقیقا چه اطلاعاتی قراره ذخیره بشه متاسفانه نمی تونم توضیح بدم فقط همین قدر بگم که پردازشی قرار نیست روی اطلاعات صورت بگیره بلکه فقط ذحیره میشه ممکنه یک بار آپدیت بشه (فیلد هایی که آپدیت میشه Nvarchar نیست بلکه Flag هست) و در نهایت بعد از چند روز به درد نمی خوره و می تونیم حذفش کنیم

single-pass رو میشه بیشتر

Javad_raouf
دوشنبه 27 شهریور 1396, 09:12 صبح
سلام
هیچ کس نظری نداره؟