সিকোয়েন্স পুনঃব্যবহার করছে


11

আমার সিস্টেমে অবজেক্টগুলির জন্য ট্র্যাকিং নম্বর উত্পন্ন করার একটি ক্রম রয়েছে। বেশ কিছুদিন ধরেই এটি ঠিকঠাক কাজ করছিল।

গত সপ্তাহে আমরা লক্ষ্য করেছি যে এটি মানগুলি পুনরায় ব্যবহার করতে শুরু করেছে।

যা ঘটছে বলে মনে হচ্ছে তা হল সন্ধ্যায় বিভিন্ন পয়েন্টে, এটি আগের দিনের মতো একটি মানে রোলব্যাক করবে। এটি তখন থেকে সেই বিন্দু থেকে মান উত্পন্ন করা চালিয়ে যাবে।

সুতরাং উদাহরণস্বরূপ আমি এই জাতীয় কিছু পেতে পারি:

10112
10113
10114
10115
10116
10117
10118
10113
10114
10115
10116
...

এটি যখন ঘটে তখন কোনও প্যাটার্ন বলে মনে হয় না, প্রথম ব্যবহার এবং দ্বিতীয় ব্যবহারের মধ্যে সময়কাল (10 মিনিট বা কয়েক ঘন্টা হিসাবে কয়েক) বা কতজন ঘুরে ফিরে আসে (1 হিসাবে কয়েক এবং কয়েকশত হিসাবে)।

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

কারও কি ধারণা রয়েছে যে প্রতি রাতে সিক্যুয়েন্স রোলব্যাক এবং পুনরায় ব্যবহারের মানগুলির কারণ হতে পারে?

আপডেট: মন্তব্যে কয়েকটি প্রশ্নের উত্তর দিতে:

  • @@Version:

    মাইক্রোসফ্ট এসকিউএল সার্ভার 2012 (এসপি 1) - 11.0.3000.0 (এক্স 64) অক্টোবর 19 2012 13:38:57

  • স্ক্রিপ্ট তৈরি করুন:

    CREATE SEQUENCE [schemaName].[SequenceName] 
      AS [bigint]
      START WITH 410014104
      INCREMENT BY 1
      MINVALUE 410000000
      MAXVALUE 419999999
      CYCLE 
      CACHE 
    GO
  • আমার কোনও অনন্য বাধা নেই (তবে আমি এটির পরিকল্পনা রাখি)। তবে এটি তখনই আমাকে জানতে সাহায্য করবে যখন আমি কোনও মান পুনরায় ব্যবহার করি। মানগুলি পুনরায় সেট করার কারণ কি নয়। আমি এটির উপর একটি চাকরি রাখি যাতে প্রতি 5 মিনিটে একটি সাশ্রয় হয় তবে এটি একটি নতুন মান পাবে। সময় এবং মান জাম্প একটি প্যাটার্ন অনুসরণ করে না।

  • কোনও ত্রুটি আছে কিনা তা দেখার জন্য আমি ইভেন্ট লগগুলি চেক করেছি। একমাত্র ভাবা যা ঘটছে তা হ'ল: http://support.microsoft.com/kb/2793634 আমরা আজই এর সমাধানটি প্রয়োগ করছি। এগুলি সম্পর্কিত বলে আমি মনে করি না, তবে এটি হতে পারে।

1
কেন এই কলামে কোনও পিকে বা অনন্য বাধা নেই? সেই জায়গায় এটির সাথে, এই পুনরায় ব্যবহারটি ধরা পড়বে, এবং আপনার অ্যাপ্লিকেশন কোডটি সমস্ত ত্রুটিগুলি গিলে না
অ্যারন বারট্র্যান্ড


আপনি কি আপনার ক্রমের সংজ্ঞাটি প্রদর্শন করতে পারেন? রাতারাতি কোনও উল্লেখযোগ্য ঘটনা ঘটেছে কিনা তা দেখতে আপনি ত্রুটি লগটি পরীক্ষা করে দেখতে পারেন (যেমন: ব্যর্থতা, পরিষেবা পুনরায় চালু, মেমরি সমস্যাগুলি ইত্যাদি)?
অ্যারন বারট্র্যান্ড

2
কী @@VERSION? এছাড়াও পরিবেশ সম্পর্কে কিছু পরিবর্তন হয়েছে? অনুরূপ কিছু রিপোর্ট করার জন্য একটি সংযুক্ত আইটেম রয়েছে। ওপিকে সেখানে সম্পর্কিত বলে গণ্য করেছেন11.0.3000.0
মার্টিন স্মিথ

2
ঠিক আছে, সাইকাইলে মূলত এসকিউএল সার্ভারকে বলে যে আপনি পুনরায় মানগুলি ব্যবহার করে ঠিক আছেন। আপনি কেন এই সমস্যাটি নিয়ে আসছেন তা সম্পর্কে আমার সম্পূর্ণ ধারণা নেই এবং আপনি জানেন না যে আপনি কেন এটির জায়গাটি সরিয়ে দেয়ার আগে আপনি কেন ফ্ল্যাট টায়ার পেয়েছিলেন তা অনুসন্ধানে আপনি কতটা সময় ব্যয় করবেন?)। আমি এখনও মনে করি আপনার অনুলিপি বাম হ'ল অনুলিপি প্রতিরোধের জন্য সেখানে সীমাবদ্ধতা রাখা এবং পুনরায় ব্যবহারের প্রতিরোধের আশায় ক্যাশে বন্ধ করা।
অ্যারন বারট্র্যান্ড

উত্তর:


11

প্রথমত, আপনি যদি এই কলামটিতে নকল করতে চান না, তা স্পষ্টভাবে উল্লেখ করুন

ALTER TABLE dbo.whatever ADD CONSTRAINT uq_that_column UNIQUE (that_column);

(বা আপনি এটি প্রাথমিক কী তৈরি করতে বা ক্লাস্টারড সূচক পরিবর্তন করতে পারেন বা আপনার কী আছে ...)

যাই হোক না কেন, আপনি যখন সদৃশ তৈরি করেন তখন একটি ত্রুটি বাড়াতে কেবল অনুলিপি অনুলিপি সন্নিবেশ করানোর চেয়ে ভাল যা আপনাকে পরে মোকাবেলা করতে হবে।

এরপরে, বিবেচনা করুন যে একটি সিকোয়েনসই কেবল একটি সংখ্যক জেনারেটর এবং ডিফল্টরূপে এটিতে 50 টি মানের একটি ক্যাশে রয়েছে। আপনার লেনদেনগুলি কীভাবে সেট আপ হয় এবং সার্ভারে কী কী সমালোচনামূলক ঘটনা ঘটে তার উপর নির্ভর করে এসকিউএল সার্ভার এটি "ভুলে যেতে" পারে যে এটি আপনার জন্য নির্দিষ্ট মান তৈরি করেছে। দুঃখিত তবে আমি এই বাগটি পুনরুত্পাদন করার ক্ষেত্রে সঠিকভাবে কোন মানদণ্ডের কারণটি জানি না। এটিকে ঘিরে যাওয়ার উপায় ( ত্রুটি সমাধান / ব্যাখ্যা না করা অবধি ) ব্যবহারের ক্রম পরিবর্তন করা NO CYCLEএবং NO CACHEযেমন:

ALTER SEQUENCE dbo.mysequence NO CYCLE NO CACHE; 

নোট যা NO CACHEপারফরম্যান্স এবং সামঞ্জস্যকে প্রভাবিত করতে পারে, তবে ফাঁকগুলি, হারিয়ে যাওয়া ব্লকগুলি এবং কে জানে, সম্ভবত আপনার সমস্যাটিও দূর করতে সহায়তা করবে।

আপনি যাচাই করতে চাইবেন যে আপনি অতি সাম্প্রতিক পরিষেবা প্যাক এবং সিইউতে রয়েছেন। এই মুহুর্তে আমি 341 সঙ্গে এসপি 1 এবং সিইউ 10 সুপারিশ করি ; এসপি 2 আউট হয়েছে তবে অনলাইনে পুনর্নির্মাণগুলি এখনও আপনার কাছে প্রভাবিত করতে পারে এমন একটি সমালোচনা সমস্যা রয়েছে


ঠিক আছে, আমি এটির ব্যাক আপ নিতে পারি না। সুতরাং যদি কোনও CACHE এটি ঠিক করে না, তবে আমি সেটাই করব।
ভ্যাকাকানো

আমি ভেবেছিলাম যে এর ফলে কোনও লেনদেন হতে পারে। তবে এমএসডিএন-এর সিকোয়েন্স পৃষ্ঠাটি বলছে "সিকোয়েন্স নম্বরগুলি বর্তমান লেনদেনের ক্ষেত্রের বাইরে উত্পন্ন হয় the সুতরাং আমি আমার লেনদেনের তত্ত্বটি বাতিল করে দিয়েছি। আমি একমত যে আরও কিছু অবশ্যই চলবে।
ভ্যাকাকানো

দেখা যাচ্ছে যে এটির সাথে সেট NO CYCLEকরা যথেষ্ট ছিল। (কমপক্ষে গত রাতে এটি ঘটেনি।) সহায়তার জন্য আপনাকে ধন্যবাদ!
ভ্যাকাকানো

1
ফিক্স: এসকিউএল সার্ভার ২০১২ বা এসকিউএল সার্ভার ২০১৪ মেমরির চাপের মধ্যে থাকলে সিকোয়েন্স অবজেক্টটি নকল ক্রম মানগুলি উত্পন্ন করে ধরে নিন যে আপনি মাইক্রোসফ্ট এসকিউএল সার্ভার ২০১২ বা এসকিউএল সার্ভার ২০১৪-এ সক্ষম হওয়া একটি সিকোয়েন্স অবজেক্ট তৈরি করেছেন। উদাহরণটি মেমরির চাপের মধ্যে থাকলে , এবং একাধিক সমবর্তী সংযোগগুলি অনুরূপ ক্রম অবজেক্ট থেকে ক্রম মানগুলি অনুরোধ করে, সদৃশ সিক্যুয়েন্স মানগুলি উত্পন্ন হতে পারে। ডুপ্লিকেট সিক্যুয়েন্স মানটি একটি সারণিতে isোকানো হলে একটি অনন্য বা প্রাথমিক কী (পিকে) লঙ্ঘন ত্রুটি ঘটে।
Andomar
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.