কেন কিছু ডিবিএমএস নির্দিষ্ট ডিডিএল বিবৃতিগুলির রোলব্যাকের অনুমতি দেবে না?


21

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

সম্পাদনা: সবেমাত্র এই তুলনাটি পাওয়া গেছে । দেখে মনে হচ্ছে অনেক DBMSes যে মত কি সমর্থন লেনদেনের DDL।


3
মাইএসকিউএল কোনও লেনদেনের মধ্যে ডিডিএলকে অনুমতি দেয় না। ডিডিএল বিবৃতি কার্যকর করার আগে, এটি কোনও সতর্কতা ছাড়াই বর্তমান লেনদেন (এই লেনদেনের অভ্যন্তরে সমস্ত বর্তমান ডিএমএল বিবৃতি!) করে।
ফ্রাঙ্ক হিকেন্স


আমি ব্যক্তিগতভাবে বিস্মিত হয়েছি যে পোস্টগ্র্রেস এটির অনুমতি দেয় - আপনি কি এক DROPবা একটি পিছনে রোল করতে পারেন RENAME?
জো

1
যতক্ষণ না আপনি পুরো ডাটাবেসটি না ফেলে, হ্যাঁ :) আমি স্রেফ যুক্ত লিঙ্কটি দেখুন
জোরিল

সুতরাং কেবল ওরাকল এবং মাইএসকিউএল লেনদেনের মধ্যেই ডিডিএল স্টেটমেন্টের অনুমতি দেয় না। এই বৈশিষ্ট্যটি সত্যই সহজ স্কিমা মোতায়েনের অনুমতি দেয়।
মারিয়ান

উত্তর:


19

পোস্টগ্র্রেএসকিউএলে এটি কাজ করার কারণটি হ'ল সিস্টেম ক্যাটালগগুলি নিয়মিত সারণী। সুতরাং একটি নতুন ফাংশন তৈরি করা, উদাহরণস্বরূপ, কেবল pg_procসারণীতে একটি সারি tingোকানো প্রয়োজন , একটি কলামের ডিফল্ট মান পরিবর্তন করার জন্য কিছু সারিটিতে একটি আপডেট করা প্রয়োজন এবং pg_attrdefএই জাতীয়। যেহেতু সারণীগুলি যেকোন উপায়ে লেনদেনমূলক, তাই আপনাকে সেভাবে কাজ না করার জন্য আপনার পথ প্রায় দূরে যেতে হবে। (প্রচুর বেদনাদায়ক বাস্তবায়ন বিশদ এখানে বাদ দেওয়া হয়েছে। ;-))

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

এর ফ্লিপ দিকটি হ'ল পোস্টগ্র্রেএসকিউএল এর বড় সংস্করণ আপগ্রেডগুলি এত বেদনাদায়ক। অন্যান্য পণ্যগুলি সম্ভবত পরিবর্তন এবং আপডেটগুলি মাথায় রেখে তাদের অভ্যন্তরীণ মেটাডেটা কাঠামো ডিজাইন করতে পারে এবং তাই কোনও নতুন বড় সংস্করণে আপগ্রেড করার কোনও সমস্যা নেই। পোস্টগ্রেএসকিউএল-তে কোনও সিস্টেম ক্যাটালগ টেবিল হঠাৎ করে কোনও সিস্টেম ক্যাটালগ টেবিলের নতুন সংস্করণের মতো দেখাবার কোনও উপায় নেই, কমপক্ষে সিস্টেমটিকে অনলাইনে রাখার সময় নয়, কারণ এর জন্য সিস্টেম ক্যাটালগগুলিতে অ্যাক্সেসের প্রয়োজন হবে। Urgh।


1
আচ্ছা আমি সহজেই ডিবি-সংস্করণ-আপগ্রেড-এর উপরে আমার ডিবিকে সার্বক্ষণিকভাবে পছন্দ করতাম তবে আমার ধারণা এটি মতামতের বিষয় :) আপনার ব্যাখ্যাটির জন্য ধন্যবাদ!
জোরিল

এটি কিছু ডাটাবেসের জন্য সমস্যাটি ব্যাখ্যা করতে পারে তবে সিস্টেম ক্যাটালগগুলি ওরাকলে নিয়মিত সারণী।
লেইউ রিফেল

10

সর্বাধিক না? হতাশাজনক।

আমি মূলত এসকিউএল সার্ভার ব্যবহার করি এবং এটিও করে। আমি জানি ওরাকল তা নয় তবে আমি ভেবেছিলাম ওরাকল সম্ভবত একটি বিচ্যুতি হতে পারে।

এসকিউএল সার্ভারে, আমি নিশ্চিত যে আপনি একক লেনদেনে একাধিক ডিডিএল স্টেটমেন্ট চালাতে পারবেন যদিও আমিও মনে করি যে বেশ কয়েকটি বিধিনিষেধ রয়েছে (যা আমি সব ভুলে গেছি)। আপনি একটি তৈরি করতে পারেন বা একটি পরিবর্তন করতে পারেন বা বেশিরভাগ জিনিসের একটি ড্রপ করতে পারেন এবং যদি আপনি চান তবে এটি আবার রোল করতে পারেন। রেড-গেট এসকিউএল তুলনা করুন (একটি সরঞ্জাম আমি পছন্দ করি) এর সুবিধা নেয়।

এটি করার ক্ষেত্রে সমস্যাটি হ'ল আপনার লেনদেনের সুযোগটি মোটামুটি আকর্ষণীয় হয়ে ওঠে ... আপনি যখন কোনও আপডেট লেনদেনের (ডিডিএল) সিস্টেম ক্যাটালগগুলি জড়িত করেন তখন আপনি কিছু সত্যই গুরুত্বপূর্ণ লক নেওয়ার ঝুঁকি চালান এবং আপনি সিস্টেম ক্যাটালগগুলিতে অ্যাক্সেস আটকাতে পারেন। ব্যবহারকারীরা ক্যাটালগগুলিতে যদি তাদের অনুসন্ধানগুলি তাদের টেবিলগুলি না খুঁজে পান তবে তারা বেশি কিছু করতে পারবেন না!

ভারসাম্য বজায় রাখার পরেও, এটি মাল্টি-স্টেটমেন্ট লেনদেনে ডিডিএলকে অন্তর্ভুক্ত করতে সক্ষম y

আরও কার্যকরভাবে, এসকিউএল সার্ভার ডিডিএল কমান্ডটি TRUNCATE একটি বহু-বিবৃতি লেনদেনের একটি উপাদানও হতে পারে । আপনি একটি লক্ষ্য টেবিলটি খুব তাড়াতাড়ি কাটাতে পারেন (খুব দ্রুত), এটি তৈরি করতে এবং তারপরে ফলাফলটি পছন্দ হলে একটি প্রতিশ্রুতিবদ্ধ করতে পারেন। যদি কিছু ভুল হয়ে যায়, আপনি রোলব্যাক এবং ভয়েলা! এটি এমন যে আপনি কখনই টেবিলকে বিরক্ত করেন না। লগ স্পেসও হ্রাস করা হয়। আমি প্রায়শই প্রায়শই এর সুবিধা গ্রহণ করি।


2
এসকিউএল সার্ভারে লেনদেন-সীমাবদ্ধ ডিডিএল-এর উদাহরণ দেখায় এমন একটি উত্তর এখানে রয়েছে । এছাড়াও, আমি সবসময় ভেবেছিলাম TRUNCATEপিছনে ঘুরিয়ে দেওয়া যাবে না। আমি ভৃল ছিলাম.
নিক চ্যামাস

5

এসকিউএল সার্ভারে আমরা ডিডিএল স্টেটমেন্টগুলিকে রোলব্যাক করতে পারি, এটি স্টেটমেন্টের শেষে অটো কমিট ব্যবহার করছে না। অন্যান্য ডিবিএমএসে আমি জানি না, তবে আমার মনে আছে ওরাকল-এ কেউ একই কাজ করতে পারে না। আমি বিশ্বাস করি এটি প্রতিটি ডিবিএমএসের জন্য নির্দিষ্ট, এসকিউএল স্ট্যান্ডার্ড এ সম্পর্কে কী বলবে তা নিশ্চিত নয়, তবে আমি নিশ্চিত যে কোনও প্রযোজক 100% মান প্রয়োগ করেন না।

এসও তে একই প্রশ্ন রয়েছে: লেনদেনের (এসকিউএল সার্ভারের মধ্যে) একাধিক ডিডিএল বিবৃতি চালানো কি সম্ভব?


5

ওরাকল ক্যোয়ারী পার্সিং ভাগ করেছে, সুতরাং একটি সেশন দ্বারা সম্পন্ন একটি নির্বাচন করুন * একটি সেশন দ্বারা সাধারনত (সাধারণত) অন্য সেশনের মতই হয়। যদি কোনও সেশনে ভাবেন যে টেবিলে দশটি কলাম রয়েছে এবং অন্যটি ভাবেন এগারটি ছিল।


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

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