একটি সূচক খুব ধীরগতিতে যুক্ত করা হচ্ছে ... একটি ইটিএ পেতে বা অগ্রগতি দেখানোর জন্য কি কোনও মাইএসকিএল সেন্টিমিটার রয়েছে?


13

একটি সূচক যুক্ত করতে আমি বর্তমানে আমার টেবিলের (20 এম এন্ট্রি) একটি পরিবর্তিত ক্যোয়ারী চালাচ্ছি। এটি ইতিমধ্যে 3 দিনেরও বেশি সময় ধরে চলছে ('টেম্প টেবিলের অনুলিপি'তে আটকে থাকবে)।

আমি কোয়েরির অগ্রগতি দেখতে পাবার কোন উপায় আছে বা অন্য কথায় কি এমন কোনও উপায় আছে যা আমি সম্পূর্ণ হওয়ার প্রাক্কলনের সময় পেতে পারি?

ধন্যবাদ।


4
MyISAM? InnoDB? যদি InnoDB, ফাইল-প্রতি-সারণীটি চালু আছে?
চার্লস

দুর্দান্ত প্রশ্ন - তাত্ক্ষণিকভাবে আমি ভাবতে পারি সর্বোত্তম জিনিসটি হ'ল কাঁচা অস্থায়ী এবং প্রকৃত ফাইলগুলির আকার ব্যবহার করে মোটামুটি অনুমান করা - আরও কিছু গবেষণা করবে

দয়া SHOW CREATE TABLE tblname\Gকরে টেবিলের উপরে থাকুন এবং আপনি যে সূচি তৈরি করতে চান তা আমাদের জানান।
RolandoMySQLDBA 21

উত্তর:


3

যখন মাইএসকিএল কোনও টেবিলে পরিবর্তন করে, তখন এটি মূলত এর একটি অনুলিপি তৈরি করে এবং তারপরে অনুলিপিটি প্রবেশ করে way আপনি যদি মাঝখানে আপডেটটি বাতিল করেন, টেবিলটি এখনও স্থিতিশীল অবস্থায় রয়েছে। সুতরাং আপনি নতুন ফাইলটি কত বড় তা দেখতে মাইএসকিএল ডেটা ডিরেক্টরিতে (/ var / lib / mysql /?) দেখতে পারেন, এটি আপনাকে জানাবে যে এটি কতটা দূরে রয়েছে। ইনোডাবের সাথে এটি কিছুটা বেশি কঠিন তবে কোথাও একটি টিএমপি টেবিল তৈরি হচ্ছে।

আপনার সাজানোর বাফার ভেরিয়েবলগুলি (মাইসাম_সোর্ট_বফার_সাইজ, সাজানো_বফার_সাইজ) বাড়িয়ে আপনি সূচককে যে পরিমাণ সময় নিচ্ছেন তা উল্লেখযোগ্যভাবে হ্রাস করতে পারবেন। আপনার যত স্মৃতি রয়েছে তার সাথে এগুলি আপনার যতটা সম্ভব বড় করুন। আপনি পরিবর্তনের সময় থেকে কয়েক দিন ছাঁটাই করতে পারেন, এমনকি আপনার কত স্মৃতি রয়েছে তার উপর নির্ভর করে এটি কয়েক ঘন্টা নামিয়ে ফেলতে পারেন। আমি প্রায় 3 ঘন্টা একটি 150M রেকর্ড টেবিল করেছি।


দুর্ভাগ্যক্রমে আমি কোনও টিএমপি টেবিলটি পেলাম না। আমি ইনডোডবি_ফাইলে_ টেবিলটি অফে সেট করে নির্দোষ ডিবি ব্যবহার করি।

2

যেহেতু ইনোডাব_ফ্লে_পার_সারণযোগ্য বন্ধ, আপনি টেবিলটি দেখতে এবং এটির অগ্রগতি পরিমাপ করতে পারবেন না।

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

আপনি একবার ইনোডিবি ক্লিনআপ পুরোপুরি কার্যকর করে নিলেন এবং ইনডোডবি_ফাইলে_পার_সামগ্রী সক্ষম হয়ে গেলে, আপনি সূচী আপডেটটি নিম্নলিখিতভাবে সম্পাদন করতে চাইতে পারেন:

উদাহরণস্বরূপ আপনার নিম্নলিখিত রয়েছে

  • মাইএসকিউএল ইনস্ট্যান্স সহ / var / lib / mysql সাথে ডেটাডির হিসাবে
  • InnoDB টেবিল db.lotsofdata20 মিলিয়ন নাম সহ কল ​​করা হয়েছে:

টেবিলটি এমন দেখাচ্ছে:

CREATE TABLE db.lotsofdata
(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30),
    PRIMARY KEY (id)
) ENGINE=InnoDB;

মনে করুন আপনি একটি নাম সূচক তৈরি করতে চান। তুমি এটি করতে পারো:

CREATE TABLE db.lotsofdata_new LIKE db.lotsofdata;
ALTER TABLE db.lotsofdata_new ADD INDEX (name);
INSERT INTO db.lotsofdata_new SELECT * db.lotsofdata;
ALTER TABLE db.lotsofdata RENAME db.lotsofdata_old;
ALTER TABLE db.lotsofdata_new RENAME db.lotsofdata;
TRUNCATE TABLE db.lotsofdata_old;
ALTER TABLE db.lotsofdata_old ENGINE=InnoDB;
DROP TABLE db.lotsofdata_old;

INSERT চলমান অবস্থায় আপনি অপারেটিং সিস্টেমে যান এবং এটি চালান:

cd /var/lib/mysql/db
watch ls -l lotsofda*.ibd

এটি আপনাকে বর্তমান আকারের একটি তালিকা দেবে lotsofdata_new.ibd। যখন এটি এর চেয়ে বড় হয় lotsofdata.ibd, তখন আপনি জানেন যে আপনি সমাপ্তির কাছাকাছি।

বিটিডাব্লু মারিয়াডিবি অভ্যন্তরীণভাবে একটি অগ্রগতি স্থিতি প্রয়োগ করেছে


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

1

কোনও সূচক তৈরির অগ্রগতি দেখার কোনও নির্ভরযোগ্য উপায় নেই। যদি আপনার প্রতি টেবিলে ইনোডাব ফাইল-ফাইল থাকে, আপনি অস্থায়ী .ibd ফাইলটি দেখে যা তথ্য ডিরেক্টরিতে তৈরি হচ্ছে এবং এটি বর্তমান ফাইলের আকারের সাথে তুলনা করে কিছুটা ইঙ্গিত পেতে পারেন তবে এটি খুব একটা নয় নির্ভরযোগ্য, আপনার বর্তমান ডেটাফাইলে মুছে ফেলা / বিভাজনজনিত কারণে ফুলে উঠতে পারে এবং নতুন ডেটা ফাইলের একটি অতিরিক্ত সূচক থাকবে যা আপনার আগেরটি নয়।

মনে হচ্ছে আপনি InnoDB প্লাগইন ইনস্টল না করেই মাইএসকিউএলের একটি সংস্করণ ব্যবহার করছেন । InnoDB প্লাগইনে দ্রুত সূচক তৈরি রয়েছে যা সূচী সংযোজন এবং মোছার জন্য টেবিলের সম্পূর্ণ পুনর্নির্মাণের প্রয়োজন হয় না। InnoDB প্লাগইনটি মাইএসকিউএল 5.5 এ ডিফল্টরূপে সক্ষম হয়েছে এবং 5.1.38 এবং তার পরে কনফিগারেশন সেটিং সহ উপলব্ধ available

  • আপনি মাইএসকিউএল এর কোন সংস্করণ ব্যবহার করছেন?

পারকোনা সার্ভারটি বেশ কয়েকটি উপায়ে ফিরে এসেছে (5.5 পূর্ববর্তী) ডিফল্টরূপে InnoDB প্লাগইন সক্ষম করেছে।


0

পারকোনার পিটি-অনলাইন-স্কিমা-পরিবর্তন বাকি সময় অনুমান দেখায়। ডিফল্টরূপে এটি প্রতি 30 সেকেন্ডে অবশিষ্ট সময় অনুমান এবং অগ্রগতি শতাংশ মুদ্রণ করে।

এটি নিজেই ALTER কমান্ড চালনার সাথে তুলনায় এটির অতিরিক্ত ফাংশন রয়েছে।

http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.