আমি কীভাবে চলমান মাইএসকিউএল কোয়েরি বন্ধ করতে পারি?


257

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

আঘাত Ctrl+C(বার কয়েক) নিহত mysqlসম্পূর্ণরূপে এবং আমাকে ফিরে শেল লাগে, তাই আমি পুনরায় সংযোগ স্থাপন করার আছে।

mysqlনিজেকে হত্যা না করে কি কোনও জিজ্ঞাসা বন্ধ করা সম্ভব ?


1
এটি উল্লেখযোগ্য যে মাইএসকিউএল 5.7 একটি সার্ভার-সাইড নির্বাচন নির্বাচন বিবরণের সময়সীমা সমর্থন করে। এখানে আরও তথ্য: mysqlserverteam.com/server-side-select-statement-timeouts
মরগান টকার

উত্তর:


462
mysql>show processlist;

mysql> kill "number from first col";

1
থ্যাঙ্কস, আমি কেবল phpmyadmin এ এটি কীভাবে করব তা জানতাম!
জিলভারডিসটেল

5
তবে mysqlমুদ্রণ হচ্ছে ... আমি প্রম্পটটি দেখতে পাচ্ছি না
ডেভিড বি

34
আমি এই বেসিক পদ্ধতির সাথে একমত, তবে আমি মনে করি এই ক্ষেত্রে ব্যবহার KILL QUERYকরা কিছুটা ভাল pre KILLএইভাবে ক্যোয়ারী মারা গেছে তবে সংযোগ নয় not
আইকে ওয়াকার 18

3
যদি আপনার প্রক্রিয়া তালিকাটি আপনার বাফারকে ছাড়িয়ে পেজার সেট করতে থাকে তবে একটি দরকারী পরামর্শ। প্রম্পটে কেবল '\ পি আরও' লিখুন। এই টিপসটি
স্কট

1
যদি এডাব্লুএস আরডিএসে মাইএসকিউএল ব্যবহার করা হয় KILLতবে আপনার চালানোর অনুমতি থাকবে না তবে আপনি চালাতে পারবেন:CALL mysql.rds_kill(12345)
কিপ করুন

70

শুধু যোগ করতে

KILL QUERY **Id** যেখানে আইডি থেকে সংযোগ আইডি show processlist

আপনি যদি কোনও অ্যাপ্লিকেশন থেকে চালানোর সময় সাধারণত সংযোগটি হত্যা করতে না চান তবে আরও ভাল।

আরও তথ্যের জন্য আপনি এখানে mysql ডক পড়তে পারেন


আমি এর সাথে একটি প্রশ্ন রেখেছি, সংযোগটি কি কেবল পুনরায় ডেকে আনে, বা সংযোগগুলি হত্যার ফলে শেষ পর্যন্ত পুলের আকারটি অ্যাপ্লিকেশনটি চালানোর পক্ষে খুব ছোট হয়?
চাচা ইরোহ

48

মাইএসকিএল সংযোগ করুন

mysql -uusername -p  -hhostname

সম্পূর্ণ প্রক্রিয়া তালিকা প্রদর্শন করুন:

mysql> show full processlist;
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| Id      | User   | Host              | db      | Command | Time | State | Info             |
+---------+--------+-------------------+---------+---------+------+-------+------------------+
| 9255451 | logreg | dmin001.ops:37651 | logdata | Query   |    0 | NULL  | show processlist |
+---------+--------+-------------------+---------+---------+------+-------+------------------+

নির্দিষ্ট ক্যোয়ারী মেরে ফেলুন। এখানে আইডি = 9255451

mysql> kill 9255451;

আপনি যদি অনুমতি অস্বীকার পেয়ে থাকেন তবে এই এসকিউএলটি ব্যবহার করে দেখুন:

CALL mysql.rds_kill(9255451)

13
দ্রষ্টব্য: যদি এডাব্লুএস আরডিএস উদাহরণ ব্যবহার করে তবে এই শেষ প্রশ্নের প্রয়োজন।
কিপ

12

mysqladminপলাতক ক্যোয়ারীটি হত্যা করতে ব্যবহার করুন :

নিম্নলিখিত আদেশগুলি চালান:

mysqladmin -uusername -ppassword pr

তারপরে প্রক্রিয়া আইডিটি নোট করুন।

mysqladmin -uusername -ppassword kill pid

পলাতক ক্যোয়ারিতে আর সংস্থান গ্রহণ করা উচিত নয়।


9

যদি আপনার কাছে mysqladminউপলব্ধ থাকে তবে আপনি এইগুলির সাথে প্রশ্নের তালিকা পেতে পারেন:

> mysqladmin -uUSERNAME -pPASSWORD pr

+-----+------+-----------------+--------+---------+------+--------------+------------------+
| Id  | User | Host            | db     | Command | Time | State        | Info             |
+-----+------+-----------------+--------+---------+------+--------------+------------------+
| 137 | beet | localhost:53535 | people | Query   | 292  | Sending data | DELETE FROM      |
| 145 | root | localhost:55745 |        | Query   | 0    |              | show processlist |
+-----+------+-----------------+--------+---------+------+--------------+------------------+

তারপরে আপনি যে মাইএসকিএল প্রক্রিয়াটি দীর্ঘকালীন চলমান ক্যোয়ারি হোস্ট করছেন তা বন্ধ করতে পারেন:

> mysqladmin -uUSERNAME -pPASSWORD kill 137

6

প্রক্রিয়াটি নিখুঁত করার জন্য আপনাকে নিম্নলিখিত কমান্ডটি চালানো দরকার।

> show processlist;  
> kill query processId;

ক্যোয়ারী প্যারামিটার উল্লেখ করে যে আমাদের ক্যোয়ারী কমান্ড প্রক্রিয়াটি মারতে হবে।

নীচে কিল প্রক্রিয়াটির সিনট্যাক্স

হত্যা [সংযোগ | QUERY] প্রসেসলিস্ট_আইডি

দয়া করে পড়ুন আরো তথ্যের জন্য এই লিঙ্কে ক্লিক করুন।


1

এই প্রশ্নের লেখক উল্লেখ করেছেন যে এটি সাধারণত মাইএসকিউএল এর আউটপুট প্রিন্ট করার পরেই বুঝতে পারে যে ভুল কোয়েরি কার্যকর করা হয়েছিল। হিসাবে উল্লিখিত, এই ক্ষেত্রে, Ctrl-Cসাহায্য করে না। তবে, আমি লক্ষ্য করেছি যে এটি বর্তমান ক্যোয়ারীটি বাতিল করে দেবে - যদি কোনও আউটপুট মুদ্রণের আগে আপনি এটি ধরেন । উদাহরণ স্বরূপ:

mysql> select * from jos_users, jos_comprofiler;

মাইএসকিউএল উপরের দুটি টেবিলের কার্টেসিয়ান পণ্য তৈরিতে ব্যস্ত হয়ে পড়ে এবং আপনি শীঘ্রই লক্ষ্য করবেন যে মাইএসকিউএল স্ক্রিনে কোনও আউটপুট প্রিন্ট করেনি (প্রক্রিয়া অবস্থা ডেটা প্রেরণ করছে ) সুতরাং আপনি টাইপ করুন Ctrl-C:

Ctrl-C -- sending "KILL QUERY 113240" to server ...
Ctrl-C -- query aborted.
ERROR 1317 (70100): Query execution was interrupted

Ctrl-Cএকইভাবে কোনও UPDATEপ্রশ্ন বন্ধ করতে ব্যবহার করা যেতে পারে ।

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