টিনিআইন্টের এসকিউএল সার্ভার স্টোরেজ


12

এসকিউএল সার্ভারে, কেন একটি ক্ষুদ্রাকৃতি 9B সারিতে সঞ্চিত থাকে? কোনও কারণে NUL বিটম্যাপ মাস্কের শেষে অতিরিক্ত একটি বাইট রয়েছে বলে মনে হচ্ছে।

    টেম্পডবি ইউএসই;
    যাওয়া

    টেবিল তৈরি করুন tbl
    (
        আমি টিনইট করি না
    );
    যাওয়া

    টিবিএল প্রবেশ করান (i)
        মূল্য (1);
    যাওয়া

    ডিবিসিসি আইএনডি ('টেম্পডিবি', 'টিবিএল', - ১);
    যাওয়া

    ডিবিসিসি ট্র্যাকিয়ন (3604); - পৃষ্ঠা ডাম্প কনসোলে যাবে
    যাওয়া

    ডিবিসিসি পৃষ্ঠা ('টেম্পডিবি', 1,168,3);
    যাওয়া

ফলাফল (ডিবিসিসি পিএজেজে প্রথমে কমপক্ষে উল্লেখযোগ্য বাইট দেখানোর কারণে আমি বাইটগুলি বিপরীত করেছি):

Record Size = 9B
10000500 01010000 00
TagA = 0x10 = 1B
TagB = 0x00 = 1B
Null Bitmap Offset = 0x0005 = 2B
Our integer column = 0x01 = 1B
Column Count = 0x0001 = 2B
NULL Bitmap = 0x0000 = 2B (what!?)

1
এটি কি কেবল শিক্ষামূলক? যেখানে প্রয়োজন সেখানে আমি ট্রিমিংয়ের জন্য সমস্ত, তবে সম্ভবত এটি 1 বাইট নয় যা নিয়ে আমি উদ্বিগ্ন হতে চলেছি ...
অ্যারন বারট্র্যান্ড

এটি শিক্ষামূলক। আমার পরবর্তী এসকিউএলস্যাটারডে আলোচনাটি কমপ্রেসিনে রয়েছে; সুতরাং, আমি লোকেরা তাদের ডেটা টাইপ পছন্দগুলির প্রভাবগুলি বুঝতে এবং সমস্ত ডেটা ধরণের সংকোচনের প্রভাব দেখানোর জন্য প্রতিটি ডেটা টাইপের জন্য উদাহরণ তৈরি করেছি।
আউটওয়্যার

আমি ধরে নিয়েছিলাম যে টিনিনেন্টটি 7 বি ওভারহেড সহ 1 বি (এটি হয়) হিসাবে সংরক্ষণ করা হবে। ভাবছি রেকর্ড শেষে বাড়তি বাইট কি ???
আউটওয়্যার

TINYINT কলামটি কেবল সারণির একমাত্র কলাম না হলে আমি বিভিন্ন ফলাফল দেখতে পাই (যদিও তারা প্রত্যাশার সাথে সঙ্গতিপূর্ণ কিনা তা নিশ্চিত না)। দেখতে বেশ বিরল ব্যবহারের ক্ষেত্রে মনে হচ্ছে।
অ্যারন বারট্র্যান্ড

অবশ্যই ব্যবহারের ক্ষেত্রে সাধারণ উদ্বেগ নয়। আমি কেবলমাত্র স্টোরের সাথে জড়িত ওভারহেড ব্যয়গুলি উভয়কেই গাড়ি চালানোর জন্য এবং প্রতিটি নতুন পাতায় কলামটি দেখতে পারা শুরুটি দেখতে দেওয়ার জন্য একাই প্রতিটি ডেটা টাইপ দেখানোর চেষ্টা করছিলাম। অতিরিক্ত বাইট পাওয়া আমার কাছে অদ্ভুত বলে মনে হচ্ছে ... সেখানে এবং কারণ ছাড়াই আমাকে বাদাম চালায়।
আউটওয়্যার

উত্তর:


12

আপনি যদি সাধারণ আকার সংযোজন ব্যবহার করে রেকর্ডটি গণনা করেন তবে আপনি প্রকৃতপক্ষে 8: 4 + 1 + 2 + 1 পাবেন (শিরোনাম + স্থির আকার + নাল বিটম্যাপ গণনা + নাল বিটম্যাপ নিজেই)। তবে হিপ রেকর্ডটি ফরোয়ার্ডিং স্টাব আকারের চেয়ে ছোট হতে পারে না , এটি 9 বাইট, যেহেতু রেকর্ড অবশ্যই গ্যারান্টি দেয় যে এটি একটি ফরোয়ার্ডিং স্টাবের সাথে প্রতিস্থাপন করা যেতে পারে। সুতরাং, রেকর্ডটি আসলে 9 বাইট দ্বারা হবে will A smallintগণনা এবং ন্যূনতম আকার উভয়ের মাধ্যমে 9 বাইট হবে। ফরোয়ার্ডিং স্টাবের চেয়ে বড় যে কোনও কিছু ইতিমধ্যে বড়, সুতরাং আপনার গণনা আকার রেকর্ড আকারের সাথে মেলে।


9 টি বাইটও এই সংজ্ঞায় প্রযোজ্য CREATE TABLE tbl (i TINYINT NOT NULL PRIMARY KEY)তাই এটি সমস্ত সারিগুলির জন্য কেবল একটি সাধারণ নিয়ম কিনা সেগুলি স্তূপের অংশ কিনা?
মার্টিন স্মিথ

1
বি-গাছ একটি গাদা (রূপান্তরিত করা যেতে পারে alter table ... drop constraint) এবং অপারেশন নয় একটি পূর্ণ পুনর্নির্মাণের (খ-ট্রি উপরের পাতায় দূরে নিক্ষিপ্ত পেতে, গাছের পাতা পৃষ্ঠাগুলি বাম লিঙ্কমুক্ত পেতে এবং ফলাফলের হয় গাদা) যাতে রিজার্ভেশন যুক্তিবিজ্ঞান এখনও প্রযোজ্য ।
রিমাস রুসানু

আমি এই প্রমাণ করে কি রেমাস বিবৃত হয়েছে ... মনে improve.dk/archive/2011/06/07/...
ooutwire

6

লেখকের কান পেয়ে ভালো লাগল। :-) ক্যালেন সন্দেহ করে যে এটি কেবল ন্যূনতম সারি দৈর্ঘ্যের কিছু প্রকারের প্রয়োগ, যেখানে <9 কে 9 প্যাড করা হয় অবশ্যই এটি সম্ভব কয়েকটি ক্ষেত্রেই অবশ্যই রয়েছে। আপনি এই ফ্যান্টম বাইটটি টিআইএনআইএনটি এবং বিআইটি পাশাপাশি ভ্রচারার (1) / CHAR (1) এর জন্য পাবেন। আপনি ছোট বা CHAR (2) এ যান তবে এটি 9 এরও বেশি বাড়বে না, তবে আপনি যদি CHAR (3) তে যান তবে এটি বাড়বে।

সুতরাং প্রয়োজনীয়ভাবে আপনি দক্ষতার সাথে ডেটা ধরণের পছন্দ করে যে দক্ষতা অর্জন করতে পারবেন তা চিহ্নিত করতে পারেন, তবে উল্লেখ করুন যে কয়েকটি প্রান্তের ঘটনা রয়েছে যেখানে স্টোরেজ স্তরের অন্যান্য কারণগুলির কারণে নিয়মগুলি রাখা হয় না।

সম্পাদনা করুন আমি আশা করি আপনার জন্য আরও নিবিড় তথ্য থাকবে। আপনাকে কেবলমাত্র জানতে চেয়েছিলেন যে বর্তমানে ইন্টারনাল বইয়ের লেখক এটি মনে করেন। তিনি 100% নিশ্চিত নন।


ক্যারেনের কাছে পৌঁছানোর জন্য অ্যারনকে ধন্যবাদ জানাই। আমি গত রাতে সেই বইটি দিয়ে খনন করছিলাম এবং আমার চুলগুলি বাইরে টানছিলাম। এটি স্কয়ার_ওয়্যারেন্টের অতিরিক্ত মেটাডেটা বাইটের মতো, এখানে হাত ছাড়া আর দোলা দেওয়ার জন্য ভ্যান্ট বাইটকে ব্যাখ্যা করার মতো আমার কাছে আর উপায় নেই, "এটাই এভাবেই পাল!"
ooutwire

1
ভাল আপনি যে মন্তব্যটি দিয়ে মন্তব্য করতে পারেন "এটি একটি চূড়ান্ত প্রান্তের মামলা, যেহেতু অনেকগুলি সারণী প্রতিটি সারিতে একক টিনিনেন্ট বা চর (1) রাখার চেষ্টা করার জন্য তৈরি করা হয় নি"।
অ্যারন বারট্র্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.