এরিটিহবার্ট চালু করার ঝুঁকিগুলি


12

আমি যে বিক্রেতার সাথে তারা মূল অ্যাপ্লিকেশন সরবরাহ করে তা নিয়ে কাজ করছি এবং আমি যতক্ষণ না কোর অ্যাপ্লিকেশনটি সংশোধন না করি ততক্ষণ আমার নিজের এক্সটেনশানগুলি তৈরি করতে পারি। এটি একটি এসকিউএল সার্ভার 2005 ডাটাবেসের সাথে সংযোগ করে কোল্ডফিউজনে নির্মিত।

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

সুতরাং এটি দেখে মনে হয় যে সূচীকৃত ভিউগুলি ব্যবহার করার জন্য, SET ARITHABORT ONযখনই মূল সারণীগুলি সন্নিবেশ করানো / আপডেট করা হচ্ছে তখনই আমার কাছে কোর অ্যাপ্লিকেশন থাকা দরকার । আমি আমার পরীক্ষার পরিবেশে এটি চালিয়েছি:

ALTER DATABASE MyDatabase SET ARITHABORT ON;

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

আসলেই কি এমন কোন প্রশ্ন রয়েছে যা ভেঙে যাবে SET ARITHABORT ON? এমন পরিস্থিতি কি আছে যেখানে এটি রাখা ভাল OFF?

টিএল; ডিআর আমার নতুন ইনডেক্সড ভিউগুলি কাজ করার জন্য আমাকে ARITHABORT ONপুরো ডাটাবেসের জন্য প্রস্তুত করতে হবে, তবে আমার বিক্রেতা হুঁশিয়ারি দিয়েছিল এটি আমার নিজের ঝুঁকিতে পড়বে। আসলে কি ঝুঁকি আছে?

উত্তর:


9

সুতরাং SET ARITHABORT ON মূলত "যদি শূন্যের দ্বারা বিভাজন ঘটে বা একটি গাণিতিক ওভারফ্লো ঘটে তবে ক্যোয়ারিকে বাতিল করতে হবে" এটি সাধারণত পছন্দসই আচরণ এবং এটি ডিফল্ট উদাহরণস্বরূপ প্রশস্ত সেটিং। যদি এটি আপনার বিক্রেতার প্রশ্নের সাথে সমস্যা সৃষ্টি করে তবে আমি বলব যে তারা কিছু কোডিং সমস্যা নিয়ে ভুগছে begin তারা কেন এখানে উদ্বিগ্ন তা সম্পর্কে আরও বিশদ জানতে আমি তাদের জিজ্ঞাসা করব।

ইনডেক্সড ভিউয়ের সমস্ত নিয়মগুলির মধ্যে , আমি এটিকে ডাকব এবং সেট বিকল্পগুলির অনেকগুলিই সবচেয়ে কম বিতর্কিত নিয়ম।

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

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


7

এই পরিবর্তনটি থেকে সুস্পষ্ট ঝুঁকি হ'ল যে বিক্রেতার অনুসন্ধানগুলি যা আগে সঠিকভাবে চালিত হয়েছিল সেগুলি ত্রুটি ছুঁড়ে ফেলা শুরু করতে পারে, বা ভুল ফলাফল ফিরে আসতে পারে। ARITHABORTসেটিং আংশিকভাবে নিয়ন্ত্রণ কিনা গাণিতিক ওভারফ্লো এবং ডিভাইড-বাই-শূন্য ত্রুটি একটি ফিরতি NULLফলাফলের, একটি ত্রুটি সঙ্গে বিবৃতি বিনষ্ট, অথবা একটি ত্রুটি সহ ব্যাচ বিনষ্ট। বিক্রেতার কোড কীভাবে কোডটিতে প্রতিক্রিয়া জানায় যা প্রত্যাবর্তনের পরিবর্তে ত্রুটি ছুঁড়ে ফেলেছে NULLতা আপনি কোনও প্রোডাকশন সিস্টেমে পরীক্ষা করতে চাইবেন না :)

তবে, আপনার ডাটাবেসের সামঞ্জস্যের স্তরটি 90 বা তার বেশি হলে এবং সেশনগুলি চালিত হলে ঝুঁকি কম থাকে SET ANSI_WARNINGS ONONআপনি যখন সূচীকৃত দর্শনগুলি পরীক্ষা করেছেন তখন এই সেটিংটি অবশ্যই হওয়া উচিত ছিল তবে আপনাকে আপনার বিক্রেতার অ্যাপ্লিকেশনটির সংযোগগুলি দ্বারা কার্যকর সেটিংটি নিশ্চিত করতে হবে । SETসংযোগ করার সময় ম্যানেজমেন্ট স্টুডিওগুলি ভেন্ডর কোড দ্বারা সেট করা থেকে আলাদা বিকল্পগুলি ব্যবহার করার জন্য কনফিগার করা যেতে পারে (এবং আপনি এটি ডেটাবেস বা উদাহরণ ডিফল্ট সহ ওভাররাইড করতে পারবেন না )। বিক্রেতার সাথে চেক করুন এবং এসকিউএল সার্ভার প্রোফাইলার ব্যবহার করে বিক্রেতা কোড ট্রেস করে নিশ্চিত করুন।

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

-- Recommended effective settings
SET NUMERIC_ROUNDABORT OFF;
SET ARITHABORT, 
    CONCAT_NULL_YIELDS_NULL, 
    QUOTED_IDENTIFIER, 
    ANSI_NULLS, 
    ANSI_PADDING,
    ANSI_WARNINGS ON;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.