মাইএসকিউএল এর লুকানো বৈশিষ্ট্য


15

গোপন বৈশিষ্ট্যগুলি রাখার দীর্ঘ traditionতিহ্য অনুসারে, আসুন মাইএসকিউএল-এ লুকানো বৈশিষ্ট্যের একটি তালিকা থাকি।

উত্তরে প্রতি একটি বৈশিষ্ট্য রাখুন।

আরও দেখুন:
লিনাক্সের
লুক্কায়িত বৈশিষ্ট্য পাওয়ারশেলের
লুকানো বৈশিষ্ট্যগুলি ওরাকল ডাটাবেসগুলির
লুকানো বৈশিষ্ট্যগুলি উইন্ডোজ 2008 এর
লুকানো বৈশিষ্ট্য সোলারিস / ওপেনসোলারিসের
লুকানো বৈশিষ্ট্য এসআইকিউএল সার্ভারের লুকানো বৈশিষ্ট্যগুলি আইআইএসের লুকানো বৈশিষ্ট্যগুলি
(6.0 / 7.0)

উত্তর:


9

একটি প্রায়শই অব্যবহৃত তবে আরও ভার্বোস

সম্পূর্ণ প্রসেসলিস্ট দেখান

সুবিধাজনক, তবে দুর্দান্ত অ-এন্টারপ্রাইজ কোয়েরি বিশ্লেষকের মতো ভাল নয় - এটি সক্ষম করুন

    mysql> সেট প্রোফাইলিং = 1;
    অনুসন্ধান ঠিক আছে, 0 টি সারি প্রভাবিত (0.00 সেকেন্ড)

এই দুটি প্রোফাইল প্রোফাইল সারণী পূরণ করতে জাঙ্ক কোয়েরি,

        
    মাইএসকিএল> _স্টেট গ্রাহকদের থেকে * নির্বাচন করুন;
    ত্রুটি 1146 (42S02): সারণী '_ টেস্ট কাস্টোমার' বিদ্যমান নেই

    mysql> টেস্ট.কাস্টমারের সীমা 0 থেকে * নির্বাচন করুন;
    খালি সেট (0.00 সেকেন্ড)
    

প্রোফাইল করা সমস্ত প্রশ্নের একটি তালিকা এবং তাদের সময়কাল পান

        
    mysql> প্রোফাইলগুলি দেখান;
    + + ---------- + + ------------ + + ------------------------- ------ + +
    | প্রশ্ন_আইডি | সময়কাল | প্রশ্ন |
    + + ---------- + + ------------ + + ------------------------- ------ + +
    | 1 | 0.00013400 | _স্টেট কাস্টোমার্স থেকে * নির্বাচন করুন
    | 2 | 0.01546500 | টেস্ট.কাস্টোমার্স থেকে * নির্বাচন করুন
    + + ---------- + + ------------ + + ------------------------- ------ + +

সর্বশেষ ক্যোয়ারির জন্য প্রদর্শন তথ্য হ'ল "প্রোফাইল দেখান" - বা আপনি একটি কোয়েরি নির্দিষ্ট করতে পারেন

  
    mysql> ক্যোয়ারী 2 এর প্রোফাইল দেখান;
    + + ---------------------- + + ---------- + +
    | স্ট্যাটাস | সময়কাল |
    + + ---------------------- + + ---------- + +
    | শুরু | 0.000053 |
    | অনুমতি পরীক্ষা | 0.000007 |
    | খোলার টেবিল | 0.000014 |
    | সিস্টেম লক | 0.000006 |
    | টেবিল লক | 0.000008 |
    | init | 0.000065 |
    | অনুকূলকরণ | 0.000003 |
    | নির্বাহ করা | 0.000201 |
    | শেষ | 0.000003 |
    | কোয়েরি শেষ | 0.000002 |
    | নিখরচায় আইটেম | 0.000020 |
    | লগিং স্লো ক্যোয়ারী | 0.000002 |
    | পরিষ্কার করা | 0.000004 |
    + + ---------------------- + + ---------- + +
    13 টি সারি সেট (0.00 সেকেন্ড)

আপনি নির্দিষ্ট তথ্যের জন্য যেমন সিপিইউ, ব্লক আইও এবং অন্যদের মধ্যে সোয়াপ্পস ( সমস্ত ম্যান পৃষ্ঠায় ) অনুরোধ করতে পারেন

  
    mysql> ক্যোয়ারি 2 এর জন্য প্রোফাইল সিপু দেখান;
    + + ---------------------- + + ---------- + + ---------- + + ---- -------- + +
    | স্ট্যাটাস | সময়কাল | সিপিইউ_উজার | সিপিইউ_সিস্টেম |
    + + ---------------------- + + ---------- + + ---------- + + ---- -------- + +
    | শুরু | 0.000056 | 0.001000 | 0.000000 |
    | অনুমতি পরীক্ষা | 0.000007 | 0.000000 | 0.000000 |
    | খোলার টেবিল | 0.000010 | 0.000000 | 0.000000 |
    | সিস্টেম লক | 0.000005 | 0.000000 | 0.000000 |
    | টেবিল লক | 0.000007 | 0.000000 | 0.000000 |
    | init | 0.000059 | 0.000000 | 0.000000 |
    | অনুকূলকরণ | 0.000003 | 0.000000 | 0.000000 |
    | পরিসংখ্যান | 0.015022 | 0.000000 | 0.000000 |
    | প্রস্তুতি | 0.000014 | 0.001000 | 0.000000 |
    | নির্বাহ করা | 0.000004 | 0.000000 | 0.000000 |
    | তথ্য প্রেরণ | 0.000245 | 0.000000 | 0.000000 |
    | শেষ | 0.000004 | 0.000000 | 0.000000 |
    | কোয়েরি শেষ | 0.000002 | 0.000000 | 0.000000 |
    | নিখরচায় আইটেম | 0.000021 | 0.000000 | 0.000000 |
    | লগিং স্লো ক্যোয়ারী | 0.000002 | 0.000000 | 0.000000 |
    | পরিষ্কার করা | 0.000004 | 0.000000 | 0.000000 |
    + + ---------------------- + + ---------- + + ---------- + + ---- -------- + +
    16 টি সারি সেট (0.00 সেকেন্ড)

লগিং ওভারহেড যোগ করার পরে এটি অক্ষম করতে ভুলবেন না।

  
    mysql> সেট প্রোফাইলিং = 0;
    অনুসন্ধান ঠিক আছে, 0 টি সারি প্রভাবিত (0.00 সেকেন্ড)

আপনি সমস্ত প্রোফাইল ডেটা দেখানোর জন্য QUERY এক্সের জন্য সমস্ত প্রোফাইল প্রোফাইলও ব্যবহার করতে পারেন।
কেদারে

8

কিছু মাইএসকিউএল কমান্ড যা সর্বদা সাধারণত পরিচিত বা মনে থাকে না।

সহজ পড়া এবং আটকানোর জন্য ফলাফল সেট ওরিয়েন্টেশনকে উল্লম্বে সেট করুন।

mysql> SELECT CURDATE(), CURTIME()\G
*************************** 1. row ***************************
CURDATE(): 2009-06-26
CURTIME(): 12:10:37

আপনি যে টাইপটি টাইপ করছেন তা আপনার ইতিহাসে রেখে যাওয়ার সময় বাতিল করুন।

mysql> SELECT CURDATE(), CURTIME()\c
mysql>

আপনার প্রিয় $ EDITOR দিয়ে একটি ক্যোয়ারী বা শেষ ক্যোয়ারী (যথাক্রমে) সম্পাদনা করুন।

mysql> SELECT CURDATE(), CURTIME()\e
mysql> \e

কনসোলের আউটপুট সাফ করুন।

mysql> \! clear

MD5 হ্যাশ দ্বারা ফলাফল সেট তুলনা করুন।

mysql> pager md5sum -
PAGER set to 'md5sum -'
mysql> SELECT CURDATE(), CURTIME();
d24e22e4e2d33dfda9f01ba934b7676a  -
mysql> nopager
PAGER set to stdout

আপনার প্রম্পট পরিবর্তন করুন।

mysql> prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_'
(dan@localhost) [test]>

প্রদত্ত স্ট্রিংয়ের জন্য আপনার কমান্ডের ইতিহাস অনুসন্ধান করুন (যেমন বাশ)।
অনুসন্ধানের শব্দটি লিখতে শুরু করুন এবং ফলাফলের মাধ্যমে চক্রটিতে repeat R পুনরাবৃত্তি করুন।

^R
(reverse-i-search)`DATE': SELECT CURDATE(), CURTIME();

Md5sum এ +1। md5sum -পেজার হিসাবে ব্যবহার করার মত ধারণাটি আমার পছন্দ হয়েছে । সত্যই আপনি
মাইএসকিএল

4

আমি যে কৌশলগুলি শিখেছি সেগুলি কারওর জন্য কার্যকর হতে পারে:

আপনি পূর্বে সংরক্ষণ করা ফাইলটি চালাতে:

source filename      # Alternatively you can enter "\\. filename".

"\!" ব্যবহার করুন শেল কমান্ড অ্যাক্সেস করতে। উদাহরণ স্বরূপ:

\\! ls c*sql   # To list all your SQL files in directory starting with "c".

সুতরাং যদি আপনি কোনও ফাইলের কাছে আপনার বক্তব্য লিখতে চান (সম্পাদক বিকল্পটি ব্যবহার না করে) আপনি প্রবেশ করতে পারেন:

\\! echo 'select * from emp where job ="salesman" '   > test2.sql   # Editor option seems easier to me though!

Enterুকলে

\\T filename

তারপরে আপনি আপনার বিবৃতি এবং ক্যোয়ারির ফলাফলগুলি নির্দেশিত / মুদ্রিত আপনি যে ফাইলমাইমে নির্দিষ্ট করেছেন তা মুদ্রিত হবে। ব্যবহার করুন \\tএই বন্ধ করতে।

\\Gএকটি ";" এর পরিবর্তে কোয়েরিটি সমাপ্ত করুন কলামগুলির পরিবর্তে একটি সারি বিন্যাসে আউটপুট দেখানোর জন্য।

কোথাও ... শো স্টেটমেন্টের সাথে ক্লজটি পছন্দ করুন ব্যবহার করবেন না। উদাহরণ স্বরূপ:

SHOW STATUS LIKE '%cache%';

শেষ অবধি, my.cnfফাইলটি ব্যবহার না করেই আপনার মাইএসকিউএল ডেটা ডিরেক্টরিটির অবস্থান সন্ধান করতে:

SHOW VARIABLES LIKE 'datadir';

3

আমি ব্যক্তিগতভাবে SHOWআদেশটি পছন্দ করি

আপনি এটি করতে পারেন
SHOW PROCESSLIST- মাইএসকিএলে চলমান সমস্ত সংযোগগুলি
SHOW CREATE TABLE TableNameদেখতে
SHOW CREATE PROCEDURE ProcedureName- টেবিল তৈরি করতে ব্যবহৃত এসকিউএল
SHOW VARIABLESদেখতে - এসপি তৈরি করতে ব্যবহৃত এসকিউএল দেখতে - সমস্ত সিস্টেমের ভেরিয়েবলগুলি দেখতে

সম্পূর্ণ তালিকা পান এখানে


1
আমি আপনাকে ভালভাবে জেনে এবং ডকুমেন্টেড কমান্ডগুলি যেমন "লুকানো বৈশিষ্ট্যগুলি" হিসাবে দেখান এবং ব্যাখ্যা করার জন্য তালিকাভুক্ত করে কিছুটা বিস্মিত হই। একটি গোপন বৈশিষ্ট্য যা নথিভুক্ত নয়?
জন গার্ডেনিয়ার্স

ঠিক আছে, অভিপ্রায়টি হ'ল এতগুলি সুপরিচিত দরকারী কমান্ডগুলি বের করে আনার জন্য, যা সম্পর্কে কারওর জানা থাকতে পারে তা অন্য কারও অজানা হতে পারে, কী বলে?
বিনোজ অ্যান্টনি

3

আসলে নথিভুক্ত , তবে খুব বিরক্তিকর: ভুল ডেটার জন্য স্বয়ংক্রিয় তারিখ রূপান্তর।

মাইএসকিউএল 5.0.2 এর আগে, মাইএসকিউএল অবৈধ বা অনুপযুক্ত ডেটা মানগুলিকে ক্ষমা করছে এবং ডেটা প্রবেশের জন্য আইনি মানগুলিতে জোর করে to মাইএসকিউএল ৫.০.২ এবং তারপরেও এটি পূর্বনির্ধারিত আচরণ হিসাবে রয়ে গেছে তবে আপনি খারাপ মানের আরও traditionalতিহ্যবাহী চিকিত্সা নির্বাচন করতে সার্ভার এসকিউএল মোড পরিবর্তন করতে পারেন যাতে সার্ভার সেগুলি প্রত্যাখ্যান করে এবং বিবৃতিটি বাতিল করে যেখানে তারা ঘটে।

কখনও কখনও আপনি "ভাগ্যবান" হবেন যখন মাইএসকিউএল নিকটস্থ বৈধ তারিখগুলিতে ইনপুটটি সামঞ্জস্য করে না, পরিবর্তে এটি 0000-00-00সংজ্ঞা হিসাবে অবৈধ বলে সংরক্ষণ করে। যাইহোক, তবুও আপনি মাইএসকিউএলটি নিঃশব্দে আপনার জন্য এই মানটি সংরক্ষণ করার চেয়ে ব্যর্থ হতে চেয়েছিলেন।


3

অন্য ডেটাবেসগুলি থেকে পৃথক করে মাইএসকিউএল সেট করে এমন একটি বৈশিষ্ট্য হ'ল REPLACE INTOকমান্ড। আপনি করতে পারেন:

REPLACE INTO T1 (Col1, Col2 )
SELECT Col1, Col2 FROM T2;

আপনি আপডেট স্টেটমেন্টটি লিখেছেন ঠিক তেমনভাবে প্রতিস্থাপনের বিবৃতিও লিখতে পারেন:

REPLACE INTO T1 
SET Col1 = 'SomeValue1'
, Col2   = 'SomeValue2'

1
প্রতিস্থাপন INTO দরকারী, কিন্তু এটি লক্ষ্য করা উচিত এটি একটি মূল চেক সম্পাদন করে, যদি কোনও মিলের কীটি পাওয়া যায় তবে অবশেষে INSERT গুলি, যা INSERT এর চেয়ে অনেক বেশি সময় নেয় ... ডুপ্লিকেট কী আপডেটে
অ্যান্ডি

2

সত্যই কোনও লুকানো বৈশিষ্ট্য নয়, তবে এটি কম পরিচিত এবং একটি আপডেট বা ইনসার্ট করার আগে কিছু উপস্থিত রয়েছে কিনা তা যাচাই করতে একটি কোয়েরি করে সংরক্ষণ করার জন্য আমি এটি ব্যবহার করি

INSERT ... ON DUPLICATE KEY UPDATE

ডকুমেন্টেশন এখানে



1

সত্যই লুকানো নয়, তবে ধীর-অনুসন্ধান-লগটি শীর্ষ সময়ে পারফরম্যান্স সমস্যার কারণ অনুসন্ধানে সত্যই সহায়ক হতে পারে।

ফাইলে my.cnf, [মাইকিকিএলডি] বিভাগে - যুক্ত করুন:

log_slow_queries=/var/log/mysql/mysql-slow.log
# log queries that took more than 1 sec
long_query_time = 1

0

ঠিক আছে, এটি একটি নকল হিসাবে চিহ্নিত করতে পারে না কারণ এটি একটি ভিন্ন সাইট (এবং আমার কাছে এখানে কোনও প্রতিনিধি নেই) তবে আমি একই প্রশ্নের জন্য এই দুর্দান্ত স্ট্যাকওভারফ্লো পোস্টের সাথে লিঙ্ক করব :


0

ঠিক যেমন পিকিউডির উত্তরের সংযোজন (নুবি হিসাবে আমি এখনও কোনও মন্তব্য যোগ করতে পারিনি), আপনি যদি এখনও সঠিক মাই সিএনএফ ফাইলটিতে স্লো ক্যোয়ারী লগের পথটি না জুড়ে থাকেন তবে ত্রুটি লগ হবে ডেটা ডিরেক্টরিতে লিখিত হয়েছে (দেখান ভ্যারিয়েবলগুলি 'ড্যাটাডির' পছন্দ করুন; এটি কোথায় তা জানতে) এবং ফাইলের নামটি [সিস্টেমনাম] -স্লো.লগ বিন্যাসে থাকবে

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