🔴گولنگ و بهینهسازی
در گولنگ، بهینهسازیها به طور مستقیم از طریق تکنیکهای FDO یا PGO اشاره نمیشود، اما کامپایلر و زمان اجرای گولنگ شامل بهینهسازیهای مختلفی هستند که میتوانند از دادههای پروفایلینگ بهرهمند شوند.
🟢بهینهسازیهای کلیدی در گولنگ:
اInlining: کامپایلر گولنگ میتواند توابع کوچک را در جای خود قرار دهد تا هزینه فراخوانی تابع کاهش یابد.
اEscape Analysis: تعیین میکند که آیا متغیرها میتوانند در پشته (stack) به جای هیپ (heap) تخصیص داده شوند، که هزینههای جمعآوری زباله (garbage collection) را کاهش میدهد.
اSSA (Static Single Assignment): کامپایلر گولنگ از فرم SSA برای ایجاد فرصتهای بهتر بهینهسازی استفاده میکند.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
در گولنگ، بهینهسازیها به طور مستقیم از طریق تکنیکهای FDO یا PGO اشاره نمیشود، اما کامپایلر و زمان اجرای گولنگ شامل بهینهسازیهای مختلفی هستند که میتوانند از دادههای پروفایلینگ بهرهمند شوند.
🟢بهینهسازیهای کلیدی در گولنگ:
اInlining: کامپایلر گولنگ میتواند توابع کوچک را در جای خود قرار دهد تا هزینه فراخوانی تابع کاهش یابد.
اEscape Analysis: تعیین میکند که آیا متغیرها میتوانند در پشته (stack) به جای هیپ (heap) تخصیص داده شوند، که هزینههای جمعآوری زباله (garbage collection) را کاهش میدهد.
اSSA (Static Single Assignment): کامپایلر گولنگ از فرم SSA برای ایجاد فرصتهای بهتر بهینهسازی استفاده میکند.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍7❤6
❇️استفاده عملی در گولنگ
هرچند گولنگ به طور صریح از اصطلاحات FDO یا PGO استفاده نمیکند، شما میتوانید از ابزارهای پروفایلینگ و تحلیل عملکرد برای بهینهسازی برنامههای گولنگ خود استفاده کنید.
💋مراحل برای بهینهسازی عملکرد در گولنگ:
😊پروفایلینگ: از ابزارهای داخلی گولنگ مانند pprof برای جمعآوری دادههای پروفایلینگ استفاده کنید.
🤔تحلیل: دادههای پروفایلینگ را تحلیل کنید تا گلوگاهها (bottlenecks)، مسیرهای داغ و مناطق قابل بهبود شناسایی شوند.
🤯بهینهسازی: کد خود را بر اساس بینشهای به دست آمده از پروفایلینگ بازنگری و بهینهسازی کنید.
🥱نمونهای از پروفایلینگ و بهینهسازی در گولنگ
🫡پروفایلینگ با pprof:
🤬تحلیل پروفایل:
از go tool pprof برای تحلیل دادههای پروفایل جمعآوری شده و شناسایی نقاط داغ استفاده کنید.
😴بهینهسازی کد:
بر اساس دادههای پروفایلینگ، کد خود را بازبینی کرده و بهینهسازی کنید.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
هرچند گولنگ به طور صریح از اصطلاحات FDO یا PGO استفاده نمیکند، شما میتوانید از ابزارهای پروفایلینگ و تحلیل عملکرد برای بهینهسازی برنامههای گولنگ خود استفاده کنید.
💋مراحل برای بهینهسازی عملکرد در گولنگ:
😊پروفایلینگ: از ابزارهای داخلی گولنگ مانند pprof برای جمعآوری دادههای پروفایلینگ استفاده کنید.
🤔تحلیل: دادههای پروفایلینگ را تحلیل کنید تا گلوگاهها (bottlenecks)، مسیرهای داغ و مناطق قابل بهبود شناسایی شوند.
🤯بهینهسازی: کد خود را بر اساس بینشهای به دست آمده از پروفایلینگ بازنگری و بهینهسازی کنید.
🥱نمونهای از پروفایلینگ و بهینهسازی در گولنگ
🫡پروفایلینگ با pprof:
package main
import (
"log"
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// your code
}
😜اجرای پروفایلر:
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30
🤬تحلیل پروفایل:
از go tool pprof برای تحلیل دادههای پروفایل جمعآوری شده و شناسایی نقاط داغ استفاده کنید.
😴بهینهسازی کد:
بر اساس دادههای پروفایلینگ، کد خود را بازبینی کرده و بهینهسازی کنید.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍8❤3
💜Escape Analysis
یکی از تکنیکهای مهم در بهینهسازی حافظه در زبانهای برنامهنویسی است. با استفاده از این تحلیل، کامپایلر میتواند تصمیم بگیرد که کدام متغیرها باید در stack و کدامها در heap ذخیره شوند، که این امر به بهینهسازی مصرف حافظه و عملکرد برنامه کمک میکند.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
یکی از تکنیکهای مهم در بهینهسازی حافظه در زبانهای برنامهنویسی است. با استفاده از این تحلیل، کامپایلر میتواند تصمیم بگیرد که کدام متغیرها باید در stack و کدامها در heap ذخیره شوند، که این امر به بهینهسازی مصرف حافظه و عملکرد برنامه کمک میکند.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍5 3
مایکروسافت در وبسایت رسمی خود ربات دستیار هوش مصنوعی Copilot که بر پایه ChatGPT است را در پلتفرم تلگرام و حالت beta در دسترس عموم قرار داده است و برای تایید باید از شماره غیر ایران استفاده کنید.
مایکروسافت در حالت کنونی با ۳۰ پرسش در روز از طریق ربات @CopilotOfficialBot در دسترس قرار داده است.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3 3
برنامهی git سیستمهاتون رو اپدیت کنید دوستان. چندتا آسیبپذیری داشته اخیرا.
من در مورد CVE-2024-32002 یه مقدار میدونم که موقع clone یه ریپو که recursive هست مشکل ایجاد میکنه. البته شایان ذکره که فقط رو سیستمهایی که میسرهاشون case insensetive هست (بله ویندوز) خطرناکه ولی به هر حال شما آپدیت کنید.
اگر هم امکان آپدیت نیست براتون میتونید symlinkها رو غیرفعال کنید چون این آسیبپذیری از symlink ها استفاده میکنه.
git config --global core.symlinks false
توضیحات بیشتر:
https://www.helpnetsecurity.com/2024/05/16/git-cve-2024-32002/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
من در مورد CVE-2024-32002 یه مقدار میدونم که موقع clone یه ریپو که recursive هست مشکل ایجاد میکنه. البته شایان ذکره که فقط رو سیستمهایی که میسرهاشون case insensetive هست (بله ویندوز) خطرناکه ولی به هر حال شما آپدیت کنید.
اگر هم امکان آپدیت نیست براتون میتونید symlinkها رو غیرفعال کنید چون این آسیبپذیری از symlink ها استفاده میکنه.
git config --global core.symlinks false
توضیحات بیشتر:
https://www.helpnetsecurity.com/2024/05/16/git-cve-2024-32002/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Help Net Security
Critical Git vulnerability allows RCE when cloning repositories with submodules (CVE-2024-32002)
New versions of Git are out, with fixes for CVE-2024-32002, which can be used to remotely execute code during a "clone" operation.
👍10
✍️Rouzbeh SabzeheiRouzbeh Sabzehei
🍾شانس Kill شدن Process تون رو کم کنید !
در بعضی مواقع به دلیل محدود بودن مقدار حافظه فیزیکی , سیستم عامل جوابگوی مقدار حافظه ای که Process های مختلف از اون درخواست میکنن نیست. تو چنین شرایطی سیستم عامل مکانیزمی به اسم OOM (Out of Memory Killer) داره که بر اساس یک سری فاکتور ها میتونه یک یا چند Process باز رو Kill کنه و مقداری حافظه آزاد بشه !
سیستم هایی که footprint زیادی روی حافظه دارن شانس Kill شدنشون توسط سیستم عامل زیاد میشه. اگه خودمون همچین سیستمی رو طراحی کردیم یا از نرم افزار های دیگه ای استفاده میکنیم که footprint زیادی دارن مثل redis و دلمون نمیخواد همچین اتفاقی براشون بیفته میتونیم از روش زیر استفاده کنیم تا شانس Kill شدنشون رو خیلی کمتر کنیم
لینوکس به هر Process یک امتیاز به اسم oom_score اختصاص میده که عددی هست بین -1000 تا 1000 که هر چی این عدد کمتر باشه شانس Kill شدن اون Process کمتره. شما میتونید با کامند زیر مقدار oom_score برنامه موردنظرتون رو ببینید
برای عوض کردن این مقدار میتونید از دستور زیر استفاده کنید , باید توجه کنید که این یه فایل عادی نیست و نمیتونید با ادیتور هایی مثل vim یا nano بازش کنید و عوضش کنید
اگه با این روش مشکل داشتید میتونید از کامند choom هم استفاده کنید
البته این مقدار تو restart شدن اون Process تغییر میکنه و میتونید یه Automation براش بنویسید که موقع Start شدن اون برنامه مقدار دلخواه oom_score شما براش ست بشه
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾شانس Kill شدن Process تون رو کم کنید !
در بعضی مواقع به دلیل محدود بودن مقدار حافظه فیزیکی , سیستم عامل جوابگوی مقدار حافظه ای که Process های مختلف از اون درخواست میکنن نیست. تو چنین شرایطی سیستم عامل مکانیزمی به اسم OOM (Out of Memory Killer) داره که بر اساس یک سری فاکتور ها میتونه یک یا چند Process باز رو Kill کنه و مقداری حافظه آزاد بشه !
سیستم هایی که footprint زیادی روی حافظه دارن شانس Kill شدنشون توسط سیستم عامل زیاد میشه. اگه خودمون همچین سیستمی رو طراحی کردیم یا از نرم افزار های دیگه ای استفاده میکنیم که footprint زیادی دارن مثل redis و دلمون نمیخواد همچین اتفاقی براشون بیفته میتونیم از روش زیر استفاده کنیم تا شانس Kill شدنشون رو خیلی کمتر کنیم
لینوکس به هر Process یک امتیاز به اسم oom_score اختصاص میده که عددی هست بین -1000 تا 1000 که هر چی این عدد کمتر باشه شانس Kill شدن اون Process کمتره. شما میتونید با کامند زیر مقدار oom_score برنامه موردنظرتون رو ببینید
cat /proc/{PID}/oom_score
برای عوض کردن این مقدار میتونید از دستور زیر استفاده کنید , باید توجه کنید که این یه فایل عادی نیست و نمیتونید با ادیتور هایی مثل vim یا nano بازش کنید و عوضش کنید
echo -100 > /proc/{PID}/oom_score_adj
اگه با این روش مشکل داشتید میتونید از کامند choom هم استفاده کنید
choom --adjust -100 --pid {PID}
البته این مقدار تو restart شدن اون Process تغییر میکنه و میتونید یه Automation براش بنویسید که موقع Start شدن اون برنامه مقدار دلخواه oom_score شما براش ست بشه
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍8❤2🔥1
داده های پروفایلینگ چیه؟🤔🤔
———————————-
دادههای پروفایلینگ به اطلاعات جمعآوری شده از اجرای یک برنامه در محیط واقعی یا آزمایشی اشاره دارد که برای تحلیل و بهینهسازی عملکرد برنامه استفاده میشود. این دادهها شامل جزئیات مختلفی درباره نحوه عملکرد کد و استفاده از منابع در طول اجرای برنامه هستند. پروفایلینگ به توسعهدهندگان کمک میکند تا گلوگاههای عملکردی، نقاط بحرانی و مشکلات مصرف منابع را شناسایی کنند و در نتیجه کد را بهینهسازی کنند.
——————————————-
انواع دادههای پروفایلینگ
cpu
mem profiling
gc profiling
blocking profiling
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
———————————-
دادههای پروفایلینگ به اطلاعات جمعآوری شده از اجرای یک برنامه در محیط واقعی یا آزمایشی اشاره دارد که برای تحلیل و بهینهسازی عملکرد برنامه استفاده میشود. این دادهها شامل جزئیات مختلفی درباره نحوه عملکرد کد و استفاده از منابع در طول اجرای برنامه هستند. پروفایلینگ به توسعهدهندگان کمک میکند تا گلوگاههای عملکردی، نقاط بحرانی و مشکلات مصرف منابع را شناسایی کنند و در نتیجه کد را بهینهسازی کنند.
——————————————-
انواع دادههای پروفایلینگ
cpu
mem profiling
gc profiling
blocking profiling
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍7🍾3
😴 اگر علاقه مند به سی پلاس پلاس هستید
🥱این رو از دست ندید
👾نکات مفیدی رو به اشتراک میذارن
🥸 https://abseil.io/tips/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🥱این رو از دست ندید
👾نکات مفیدی رو به اشتراک میذارن
🥸 https://abseil.io/tips/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾6❤2
🍻این hot paths چیه؟🔥
در واقع این "Hot paths" در زمینه بهینهسازی عملکرد نرمافزار، به بخشهایی از کد اشاره دارد که بیشترین بار پردازشی را دارند و بیشترین زمان CPU را مصرف میکنند. به عبارت دیگر، این بخشها نقاط داغ یا مسیرهای داغ (hot spots) برنامه هستند که در طول اجرای برنامه بیشتر تکرار میشوند و نیازمند توجه ویژهای برای بهینهسازی هستند.
برای شناسای و بهینه سازی هم از ابزار های پروفایلینگ استفاده می کنیم که چند پست گذاشتم در موردشون
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
در واقع این "Hot paths" در زمینه بهینهسازی عملکرد نرمافزار، به بخشهایی از کد اشاره دارد که بیشترین بار پردازشی را دارند و بیشترین زمان CPU را مصرف میکنند. به عبارت دیگر، این بخشها نقاط داغ یا مسیرهای داغ (hot spots) برنامه هستند که در طول اجرای برنامه بیشتر تکرار میشوند و نیازمند توجه ویژهای برای بهینهسازی هستند.
برای شناسای و بهینه سازی هم از ابزار های پروفایلینگ استفاده می کنیم که چند پست گذاشتم در موردشون
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
براساس شنیدهها ۳۰ نفر از کارمندان فلایتیو تعدیل و مدیر عامل و مدیران فنی، مارکتینگ، مالی و منابع انسانی استعفا دادهاند.
براساس این خبر علت استعفای مدیران فلایتیو دخالت سرمایهگذاران در مدیریت و ایجاد مشکلات نقدینگی بوده که برخی از کارکنان نیز در لینکدین از عدم پرداخت دستمزد خود خبر دادهاند.
به گفته کارکنان فلایتیو، این شرکت ساعت ۳ بامداد جمعه گذشته به کارکنان خود خبر از تعدیل نیرو را داده است.
#فلایتیو
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
براساس این خبر علت استعفای مدیران فلایتیو دخالت سرمایهگذاران در مدیریت و ایجاد مشکلات نقدینگی بوده که برخی از کارکنان نیز در لینکدین از عدم پرداخت دستمزد خود خبر دادهاند.
به گفته کارکنان فلایتیو، این شرکت ساعت ۳ بامداد جمعه گذشته به کارکنان خود خبر از تعدیل نیرو را داده است.
#فلایتیو
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤4 2
اموجی خنده که تا چند وقت پیش حرام اعلام شده بود از سوی ادمین😂از این به بعد حلال اعلام شد و می تونید استفاده کنید توی چنل
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🤣33 3🍾1
فعلن توی این بازه زمانی اگر میخواید زودتر رزومه تون دیده بشه و وارد فرایند مصاحبه بشید کافیه بزنید توی
کار میکرید😂
گرفتاری شدیم 🚬🚬
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
فلایتیو
کار میکرید😂
گرفتاری شدیم 🚬🚬
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🤣31🍾1 1
Working with String, Rune and []byte in Golang
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
package main
import "fmt"
func main() {
// working with Rune and String
aRune := '*'
fmt.Println("the integer value is:", aRune)
fmt.Printf("the string value is: %s\n", string(aRune))
fmt.Printf("the character value is: %c", aRune)
// working with string and bytes array
a := "this is string"
aByteOfa := []byte(a)
fmt.Printf("the string value of a is: %s\n", a)
fmt.Printf("the first byte of a is: %d\n this is equal to: %c", aByteOfa[0], a[0])
}
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾3❤2👍1
👾تحلیل Escape (Escape Analysis) در زبانهای برنامهنویسی، از جمله گولنگ (Golang)، روشی است برای تعیین اینکه آیا یک متغیر محلی میتواند از محدودهی خود خارج شود و در حافظهی heap ذخیره شود یا خیر. این تحلیل به کامپایلر کمک میکند تا تصمیم بگیرد که متغیرها باید در stack یا heap ذخیره شوند. در ادامه نحوه عملکرد Escape Analysis را توضیح میدهم.
🫡مراحل عملکرد Escape Analysis
تحلیل در زمان کامپایل:
در زمان کامپایل انجام میشود. کامپایلر بررسی میکند که هر متغیر محلی چگونه استفاده میشود و آیا میتواند از محدودهی محلی خود فراتر رود یا نه.
شناسایی محدودهی استفاده از متغیرها:
کامپایلر تعیین میکند که هر متغیر محلی در چه محدودهای استفاده میشود. اگر متغیری فقط در همان تابعی که در آن تعریف شده است استفاده شود و هیچ اشارهگری (pointer) به آن متغیر از تابع خارج نشود، آن متغیر "escapes" نمیشود و در stack ذخیره میشود.
تصمیمگیری برای ذخیرهسازی در stack یا heap:
اگر کامپایلر تشخیص دهد که متغیر نمیتواند از محدودهی محلی خود فراتر رود، آن را در stack ذخیره میکند.
اگر متغیر به خارج از محدودهی محلی خود ارجاع داده شود (مثلاً اگر به عنوان اشارهگر به تابع دیگری پاس داده شود)، در heap ذخیره میشود تا از تخریب زودهنگام جلوگیری شود.
🥳مثال
فرض کنید کدی به شکل زیر داریم:
در این مثال، کامپایلر بررسی میکند که آیا متغیر user در تابع main میتواند از محدودهی خود خارج شود یا خیر. از آنجا که متغیر user به عنوان اشارهگر به تابع printUser پاس داده میشود، احتمال اینکه در heap ذخیره شود وجود دارد.
نحوه تشخیص Escape Analysis در Golang
برای مشاهدهی نتایج Escape Analysis در گولنگ، میتوانید از فلگ -gcflags استفاده کنید:
این دستور خروجیای مشابه زیر را تولید میکند:
در اینجا میبینید که متغیر user به heap فرار کرده است زیرا به تابع printUser پاس داده شده است.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🫡مراحل عملکرد Escape Analysis
تحلیل در زمان کامپایل:
در زمان کامپایل انجام میشود. کامپایلر بررسی میکند که هر متغیر محلی چگونه استفاده میشود و آیا میتواند از محدودهی محلی خود فراتر رود یا نه.
شناسایی محدودهی استفاده از متغیرها:
کامپایلر تعیین میکند که هر متغیر محلی در چه محدودهای استفاده میشود. اگر متغیری فقط در همان تابعی که در آن تعریف شده است استفاده شود و هیچ اشارهگری (pointer) به آن متغیر از تابع خارج نشود، آن متغیر "escapes" نمیشود و در stack ذخیره میشود.
تصمیمگیری برای ذخیرهسازی در stack یا heap:
اگر کامپایلر تشخیص دهد که متغیر نمیتواند از محدودهی محلی خود فراتر رود، آن را در stack ذخیره میکند.
اگر متغیر به خارج از محدودهی محلی خود ارجاع داده شود (مثلاً اگر به عنوان اشارهگر به تابع دیگری پاس داده شود)، در heap ذخیره میشود تا از تخریب زودهنگام جلوگیری شود.
🥳مثال
فرض کنید کدی به شکل زیر داریم:
package main
type User struct {
Name string
Age int
}
func main() {
user := User{"Alice", 30}
printUser(&user)
}
func printUser(u *User) {
println(u.Name)
}
در این مثال، کامپایلر بررسی میکند که آیا متغیر user در تابع main میتواند از محدودهی خود خارج شود یا خیر. از آنجا که متغیر user به عنوان اشارهگر به تابع printUser پاس داده میشود، احتمال اینکه در heap ذخیره شود وجود دارد.
نحوه تشخیص Escape Analysis در Golang
برای مشاهدهی نتایج Escape Analysis در گولنگ، میتوانید از فلگ -gcflags استفاده کنید:
go build -gcflags="-m" main.go
این دستور خروجیای مشابه زیر را تولید میکند:
# command-line-arguments
./main.go:10:6: can inline main
./main.go:13:13: user escapes to heap
./main.go:14:14: &user escapes to heap
./main.go:10:13: main ... argument does not escape
./main.go:16:16: printUser ... argument does not escape
در اینجا میبینید که متغیر user به heap فرار کرده است زیرا به تابع printUser پاس داده شده است.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍8
100X Scaling_ How Figma Scaled its Databases.pdf
3.5 MB
#bytebytego #tips #pro_guide
100X Scaling How Figma Scaled its Databases
☕️ Buy Coffee me!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
100X Scaling How Figma Scaled its Databases
☕️ Buy Coffee me!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍4
آخر این هفته مهمان #دورهمی_پروداکتی به میزبانی احسان هستم تا در رابطه با چالشهای کار در تیمهای بزرگ گپ و گفتی داشته باشیم و همچنین به بررسی مزایا و معایب کار کردن در تیم های کوچک و یا تکنفره استارتاپها در مقابل حضور در تیمهای بزرگ و سازمان یافته بعنوان طراح محصولی که در ابتدای مسیر حرفهایش هست بنشینیم.
زمان برگزاری: جمعه ۱۱ خرداد ماه ساعت ۱۷ به وقت تهران
لینک میتینگ:
https://lnkd.in/dY9e8ZqK
افزودن به کلندر به صورت مستقیم : (اگر توی گوشی باگ داره از طریق سیستم اضافه کنید.)
https://lnkd.in/dVgnMFA6
میبینمتون 👋
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
زمان برگزاری: جمعه ۱۱ خرداد ماه ساعت ۱۷ به وقت تهران
لینک میتینگ:
https://lnkd.in/dY9e8ZqK
افزودن به کلندر به صورت مستقیم : (اگر توی گوشی باگ داره از طریق سیستم اضافه کنید.)
https://lnkd.in/dVgnMFA6
میبینمتون 👋
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍2🍾1
MyRocks has been extended by the MariaDB engineering team to be a pluggable storage engine that you use in your MariaDB solutions. It works seamlessly with MariaDB features. This openness in the storage layer allows you to use the right storage engine to optimize your usage requirements, which provides optimum performance. Community contributions are one of MariaDB’s greatest advantages over other databases. Under the lead of our developer Sergey Petrunia, MyRocks in MariaDB is occasionally being merged with upstream MyRocks from Facebook.
https://mariadb.com/kb/en/about-myrocks-for-mariadb/
☕️ Buy Coffee me!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#note
For high-write environments, B-Tree indexes may not be ideal. Instead, LSM trees are
often used. New records are written quickly to an active memtable in memory. Older
memtables are then transformed into SSTables and moved to disk, avoiding disruption
to current writes. Over time, these SSTables are compacted and reorganized, enhancing
future write and read operations.
☕️ Buy Coffee me!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
For high-write environments, B-Tree indexes may not be ideal. Instead, LSM trees are
often used. New records are written quickly to an active memtable in memory. Older
memtables are then transformed into SSTables and moved to disk, avoiding disruption
to current writes. Over time, these SSTables are compacted and reorganized, enhancing
future write and read operations.
☕️ Buy Coffee me!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍1