TGViewer
Go Casts | Systems & Agents 🚀 Go Casts | Systems & Agents 🚀 @gocasts · 9.97K subscribers
Post #222 2.44K
💣 یه نکته در مورد دیتابیس mysql/mariadb روی scale

یه سری جداول داریم، تخمین مون اینه که خیلی تعداد رکوردهاش زیاد میشه، مثلا شاید به ماهی ۵۰ تا ۱۰۰ میلیون رکورد برسه
نکته دیگه اینه که این رکوردهارو موقت احتیاج داریم تو دیتابیس ذخیره کنیم، و بعد از مثلا چند هفته دیگه به رکوردهای قدیمی احتیاجی نداریم

خب دنبال راه حل بودیم که حجم دیتابیس رو مدیریت کنیم

راه حل اول: بیایم یه job بنویسیم که هر چند وقت یکبار بره رکوردهای قدیمی رو از جدول مورد نظر پاک کنه

نتیجه: جواب نمیده!!!!!
دو تا مشکل داریم، یک اینکه وقتی تو دیتابیس mysql ما رکوردی رو حذف می کنیم، فضای دیسک اشغال شده برای اون رکورد پس داده نمیشه، بلکه برای ذخیره کردن رکورد جدید ازش مجددا استفاده میشه
این دوتا مشکل ایجاد میکنه
یک اینکه فضای دیسک اشغال شده حتی با وجود حذف رکوردهای قدیمی همیشه در حال افزایش هست و هیچوقت کم نمیشه
دوم اینکه مشکل data fragmentation بوجود میاد که performance رو برای read کردن بد میکنه
https://www.databasejournal.com/mysql/mysql-data-fragmentation-what-when-and-how

راه حل دوم: استفاده از partitioning
ما میتونیم دیتارو shard کنیم و در partitionهای مختلف نگه داری کنیم
برای partition کردن سیاست های مختلفی میشه در نظر گرفت، مثلا بر اساس تعداد رکورد (همون id اگه bigint هست) یا براساس create_time (این خیلی توصیه نمیشه)
خوبیش این میشه که وقتی partition میکنی، هر وقت که دیتاهای قدیمی رو لازم نداشتی، میتونی براحتی partitionهای قدیمی رو delete کنی، اینطوری فضای دیسک خالی میشه، مشکل data fragmentation هم بوجود نمیاد

خوشحال میشم اگه تجربه مشابهی دارید، یا پیشنهادی دارید، تو کامنت ها بنویسید

@gocasts

#mysql #database_at_scale #sharding


کامنت هایی که نکات خوبی رو اشاره کردند، اینجا لیست می‌کنم

https://t.me/c/1525472919/1552

https://t.me/c/1525472919/1529

https://t.me/c/1525472919/1551

https://t.me/c/1525472919/1553

https://t.me/c/1525472919/1531

https://t.me/c/1525472919/1529

https://t.me/c/1525472919/1532
Database Journal MySQL Data Fragmentation - What, When and How | Database Journal MySQL tables, including MyISAM and InnoDB, two of the most common types, experience fragmentation as data is inserted and deleted randomly. Fragmentation
  • 👍 24
  • 👏 3
  • 🔥 2
More from @gocasts
  1. Oct 11, 2026روحت شاد آقای چاپلین. باورم نمیشه که عصر جدید داره برامون تکرار میشه! انگار خط تولید «عصر…
  2. Oct 9, 2026با یه پارادوکسی مواجه هستیم که خیلی مهمه درست درکش کنیم. وقتی در مورد کارایی که با ایجنت‌ه…
  3. Oct 4, 2026از دیروز چند آیتم ظاهری در GoCasts به‌روز شده 🚀 اگه دقت کرده باشید، لوگو، اسم کانال و بیو…
  4. Oct 1, 2026اینم از عمو باب که تسلیم شد! کاری ندارم که با ایشون هم نظر بودید و هستید یا نه. به دور از…
  5. Oct 1, 2026ترکیب Sonnet 5.5 و Opus 5.5 این روزا خیلی خوب جواب میده. الگویی که برای من جواب داده اینه:…
  6. Sep 24, 2026این بهترین تجربه‌ای بود که تا حالا با یه agent داشتم. دیشب با تاخیر چند ساعته ایمیل هاستین…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →