fdatasync()
বনাম কীভাবে fsync()
কাজ করে তা এখানে একটি ব্যাখ্যা is
fdatasync()
কোনও ফাইলের সমস্ত ডেটা বাফার ডিস্কে ফ্লাশ করে (সিস্টেম কল ফেরত দেওয়ার আগে)। এটি সাদৃশ্যযুক্ত fsync()
তবে অ্যাক্সেসের সময় হিসাবে মেটাডেটা আপডেট করার প্রয়োজন নেই। অ্যাপ্লিকেশনগুলি যা ডাটাবেসগুলি বা লগ ফাইলগুলিতে অ্যাক্সেস করে তারা প্রায়শই একটি ক্ষুদ্র ডাটা টুকরো টুকরো লিখে দেয় (উদাহরণস্বরূপ, লগ ফাইলে একটি লাইন) এবং তারপরে fsync()
তাত্ক্ষণিকভাবে কল করুন যাতে লিখিত তথ্য শারীরিকভাবে হার্ডডিস্কে সঞ্চিত থাকে। দুর্ভাগ্যক্রমে, fsync()
সর্বদা দুটি লেখার কাজ শুরু করবে
- নতুন লিখিত তথ্যের জন্য একটি রাইটিং অপারেশন
- ইনোডে সঞ্চিত পরিবর্তনের সময় আপডেট করার জন্য একটি লিখন অপারেশন
যদি পরিবর্তনের সময়টি লেনদেন ধারণার অংশ না হয়, তবে fdatasync()
অপ্রয়োজনীয় ইনোড ডিস্ক রাইটিং ক্রিয়াকলাপ এড়ানোর জন্য ব্যবহার করা যেতে পারে।
ইংরেজিতে, O_DSYNC
দ্রুত চেয়ে O_DIRECT
যেহেতু O_DIRECT
কল fsync()
দুইবার (লগ এবং অন্যটি ডেটার জন্য) এবং fsync()
দুই লেখ অপারেশন মাধ্যমে যাচাই ডেটা লিখেছেন। O_DSYNC
কল fdatsync()
এবং ব্যবহার করে fsync()
। আপনি fdatasync()
একটি fsync()
অ্যাসিনক্রোনাস (ডেটা যাচাইকরণ নয়) করছেন বলে ভাবতে পারেন ।
সংখ্যার দিকে তাকালে, O_DSYNC
চারটি অপ্স লেখেন, যার মধ্যে দুটি যাচাই করা হয়েছে, যখন fsync()
চারটি লেখার ক্রিয়াকলাপ করেন, সবগুলি পরে যাচাই করা হয়।
উপসংহার
O_DSYNC
- তুলনায় দ্রুততর
O_DIRECT
- বিলম্ব বা সম্পূর্ণ ক্র্যাশের কারণে ডেটা সামঞ্জস্য হতে পারে / নাও হতে পারে
O_DIRECT
- আরো স্থিতিশীল
- ধারাবাহিক তথ্য
- স্বাভাবিকভাবে ধীর
আমি আশা করি এই উত্তরটি সাহায্য করবে এবং আমি আশা করি যে আমি আপনার পক্ষে খারাপ কিছু তৈরি করিনি।