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


101

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

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

উত্তর:


161

আপনি যেহেতু অনুগ্রহ করেছেন তাই আমি আমার হার্ড জিতে থাকা গোপনীয়তাগুলি ভাগ করব ...

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

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

প্রশাসন:

max_connectionsসমবর্তী সংযোগের সংখ্যা। ডিফল্ট মান 100 সংযোগ (5.0 সাল থেকে 151) - খুব ছোট।

বিঃদ্রঃ:

সংযোগগুলি স্মৃতি গ্রহণ করে এবং আপনার ওএস প্রচুর সংযোগগুলি পরিচালনা করতে সক্ষম হতে পারে।

লিনাক্স / x86 এর জন্য মাইএসকিউএল বাইনারিগুলি আপনাকে 4096 অবধি একযোগে সংযোগ রাখতে দেয় তবে স্ব-সংকলিত বাইনারিগুলির প্রায়শই এর সীমা কম থাকে।

আপনার খোলার সারণী এবং সমবর্তী সংযোগগুলির সংখ্যার সাথে মেলে টেবিল_ক্যাশ সেট করুন। ওপেন_ টেবিলের মানটি দেখুন এবং এটি দ্রুত বাড়তে থাকলে আপনাকে এর আকার বাড়িয়ে তুলতে হবে।

বিঃদ্রঃ:

পূর্ববর্তী 2 পরামিতিগুলির জন্য প্রচুর খোলার ফাইলের প্রয়োজন হতে পারে। 20 + সর্বোচ্চ_সংযোগগুলি + টেবিল_ক্যাশ * 2 আপনার যা প্রয়োজন তার জন্য এটি একটি ভাল অনুমান। লিনাক্সে মাইএসকিউএল এর একটি ওপেন_ফিল_লিমিট বিকল্প রয়েছে, এই সীমাটি সেট করুন।

আপনার যদি জটিল প্রশ্নগুলি থাকে তবে সাজানো_ বাফার_সাইজ এবং tmp_table_size খুব গুরুত্বপূর্ণ হওয়ার সম্ভাবনা রয়েছে। মানগুলি ক্যোয়ারী জটিলতা এবং উপলভ্য সংস্থানগুলির উপর নির্ভর করবে, তবে যথাক্রমে 4Mb এবং 32Mb সূচনা করার পয়েন্টের প্রস্তাব দেওয়া হচ্ছে।

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

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

প্রাথমিক কী:

প্রতি টেবিলের জন্য কেবলমাত্র একটি AUTO_INCREMENT কলাম থাকতে পারে, এটি অবশ্যই সূচী করা উচিত, এবং এটির কোনও খেলাপি মান থাকতে পারে না

KEY সাধারণত INDEX এর প্রতিশব্দ। কলাম সংজ্ঞাতে প্রদত্ত মূল কী বৈশিষ্ট্যটি প্রাইমারি KEY এছাড়াও কেবল KEY হিসাবে নির্দিষ্ট করা যেতে পারে। এটি অন্যান্য ডাটাবেস সিস্টেমের সাথে সামঞ্জস্যের জন্য প্রয়োগ করা হয়েছিল।

একটি প্রাথমিক কী একটি অনন্য সূচক যেখানে সমস্ত কী কলামগুলি নাল নয় হিসাবে সংজ্ঞায়িত করা উচিত

যদি কোনও প্রাথমিক কী বা অনন্য সূচক কেবলমাত্র একটি কলাম থাকে যার একটি পূর্ণসংখ্যা টাইপ থাকে তবে আপনি নির্বাচনী বিবৃতিতে কলামটি "_রোড" হিসাবে উল্লেখ করতে পারেন।

মাইএসকিউএল-তে প্রাইমারী কী-এর নাম প্রাথমিক

বর্তমানে, কেবল ইনোডিবি (v5.1?) সারণীগুলি বিদেশী কীগুলি সমর্থন করে।

সারণী তৈরি করার সময় সাধারণত আপনার প্রয়োজনীয় সমস্ত সূচক তৈরি করেন। প্রাইমারি কী, কেই, ইউনিক, বা আইএনডেক্স হিসাবে ঘোষিত যে কোনও কলাম সূচীভূত হবে।

নুল মানে "মান না থাকা"। NULL পরীক্ষা করার জন্য, আপনি গাণিতিক তুলনা অপারেটর যেমন =, <, বা <> ব্যবহার করতে পারবেন না । পরিবর্তে IS নাল এবং নাল অপারেটর ব্যবহার করুন:

NO_AUTO_VALUE_ON_ZERO 0 এর জন্য অটো বর্ধনকে দমন করে যাতে কেবলমাত্র NULL পরবর্তী ক্রম সংখ্যাটি উত্পন্ন করে। এই মোডটি কার্যকর হতে পারে যদি 0 টি কোনও টেবিলের স্বতঃপরিচয় কলামে সংরক্ষণ করা থাকে। (0 স্টোর করা কোনওভাবেই প্রস্তাবিত অনুশীলন নয়))

নতুন সারিগুলির জন্য ব্যবহৃত AUTO_INCREMENT কাউন্টারটির মান পরিবর্তন করতে:

ALTER TABLE mytable AUTO_INCREMENT = value; 

বা SET INSERT_ID = মান;

অন্যথায় নির্দিষ্ট না করা পর্যন্ত, মানটি শুরু হবে: 1000000 বা এটি এইভাবে নির্দিষ্ট করুন:

...) ইঞ্জিন = মাইসাম ডিফল্ট চিঠিটি = ল্যাটিন 1 আউটপুট ক্রিমেন্ট = 1

টাইমস্ট্যাম্প:

TIMESTAMP কলামগুলির মানগুলি বর্তমান সময় অঞ্চল থেকে সংগ্রহের জন্য ইউটিসিতে এবং ইউটিসি থেকে বর্তমান সময় অঞ্চলে পুনরুদ্ধারের জন্য রূপান্তরিত হয়।

http://dev.mysql.com/doc/refman/5.1/en/timestamp.html একটি টেবিলের একটি টাইমস্ট্যাম্প কলামের জন্য আপনি বর্তমান টাইমস্ট্যাম্পটি ডিফল্ট মান এবং স্বতঃ আপডেটের মান হিসাবে নির্ধারণ করতে পারেন।

যেখানে এই ধরণের কোনও হ'ল দফায় ব্যবহার করার সময় লক্ষ্য রাখতে হবে, WHERE তারিখের কলাম = FROM_UNIXTIME (1057941242) করা ভাল এবং যেখানে UNIX_TIMESTAMP (তারিখের কলাম) = 1057941242 নয় the পরবর্তী কাজগুলি কোনও সূচকের সুবিধা নেবে না যে কলামে।

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

 UNIX_TIMESTAMP() 
 FROM_UNIXTIME() 
 UTC_DATE()
 UTC_TIME()
 UTC_TIMESTAMP()

যদি আপনি মাইএসকিউএলে ডেটটাইমটিকে ইউনিক্স টাইমস্ট্যাম্পে রূপান্তর করেন:
এবং তারপরে এটিতে 24 ঘন্টা যুক্ত করুন:
এবং তারপরে এটি আবার কোনও ডেটটাইমে রূপান্তর করুন যা ম্যাজিকভাবে এটি এক ঘন্টা হারায়!

এখানে কি ঘটছে। ইউনিক্স টাইমস্ট্যাম্পকে ডেটটাইমে ফিরিয়ে আনার সময় টাইমজোনটিকে বিবেচনা করা হয় এবং ঠিক তাই ঘটেছিল যে ২ 2006 শে থেকে ২৯ শে অক্টোবর ২০০ 2006 এর মধ্যে আমরা দিবালোকের সঞ্চয় সময় ছেড়ে গিয়েছিলাম এবং এক ঘন্টা হারিয়েছি।

মাইএসকিউএল ৪.১.৩ দিয়ে শুরু করে, সংযোগের বর্তমান সময় অঞ্চলে CURRENT_TIMESTAMP (), CURRENT_TIME (), CURRENT_DATE () এবং FROM_UNIXTIME () ফাংশনগুলি মান দেয় যা সময়_ অঞ্চল সিস্টেমের ভেরিয়েবলের মান হিসাবে উপলব্ধ। তদ্ব্যতীত, UNIX_TIMESTAMP () ধরে নেয় যে এর যুক্তিটি বর্তমান সময় অঞ্চলে একটি তারিখের মান।

বর্তমান টাইম জোন সেটিংটি ইউটিসিটাইমসটেমপি () বা DATE, TIME, বা DATETIME কলামের মানগুলির মতো ফাংশন দ্বারা প্রদর্শিত মানগুলিকে প্রভাবিত করে না।

দ্রষ্টব্য: কেবলমাত্র ক্ষেত্রটি পরিবর্তিত হলে আপডেটের তারিখটি আপডেট করে যদি কোনও আপডেটের কোনও ক্ষেত্র পরিবর্তন না হয় তবে তারিখের সময় আপডেট হয় না!

সংযোজন হিসাবে, প্রথম TIMESTAMP নির্দিষ্ট না থাকলেও সর্বদা ডিফল্টরূপে AUPOUPDATE

তারিখগুলির সাথে কাজ করার সময়, আমি প্রায় সবসময় জুলিয়ান ডেটকে গণ্য করি কারণ ডেটা ম্যাথটি তখন একই কারণে মধ্যরাত থেকে পূর্ণসংখ্যার যোগ এবং বিয়োগের একটি সাধারণ বিষয় এবং সেকেন্ড। এটি বিরল যে আমার সেকেন্ডের চেয়ে সূক্ষ্ম গ্রানুলারিটির সময় পুনরুদ্ধার দরকার।

এগুলি উভয়ই 4 বাইট পূর্ণসংখ্যার হিসাবে সংরক্ষণ করা যেতে পারে এবং স্থানটি সত্যই শক্ত হয়ে থাকলে UNIX সময়কে (যুগের 1/1/1970 সাল থেকে সেকেন্ড) একটি স্বাক্ষরবিহীন পূর্ণসংখ্যার হিসাবে একত্রিত করা যেতে পারে যা 2106 অবধি ভাল হবে:

24 সেকেন্ডে সেকেন্ড = 86400

'স্বাক্ষরিত পূর্ণসংখ্যার সর্বাধিক ভাল = 2,147,483,647 - 68 বছর সেকেন্ড ধরে রাখতে পারে

'স্বাক্ষরবিহীন পূর্ণসংখ্যার সর্বাধিক ভাল = 4,294,967,295 - 136 বছর সেকেন্ড ধরে রাখতে পারে

বাইনারি প্রোটোকল:

মাইএসকিউএল ৪.১ একটি বাইনারি প্রোটোকল চালু করেছে যা স্ট্রিং বিন্যাসে এবং রূপান্তর ছাড়াই নন-স্ট্রিং ডেটা মানগুলি দেশীয় ফর্ম্যাটে প্রেরণ এবং ফিরে পাওয়ার অনুমতি দেয়। (খুবই কাজের)

অন্যদিকে, mysql_real_query () mysql_query () এর চেয়ে দ্রুততর কারণ স্টেট্রেন স্ট্রিংটিতে কাজ করতে এটি স্ট্রেন () কল করে না।

http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html বাইনারি প্রোটোকলটি সার্ভার-সাইড প্রস্তুত বিবৃতিগুলিকে সমর্থন করে এবং দেশীয় ফর্ম্যাটে ডেটা মান ট্রান্সমিশনের অনুমতি দেয়। বাইনারি প্রোটোকলটি মাইএসকিউএল ৪.১ এর পূর্ববর্তী প্রকাশের সময় বেশ কিছুটা সংশোধন করেছিল।

ক্ষেত্রের একটি সংখ্যার প্রকার রয়েছে কিনা তা পরীক্ষা করতে আপনি IS_NUM () ম্যাক্রো ব্যবহার করতে পারেন। IS_NUM () তে প্রকারের মানটি পাস করুন এবং ক্ষেত্রটি সংখ্যাসূচক হলে এটি সত্যে মূল্যায়ন করে:

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

মাস্টার সার্ভার:

http://www.experts-exchange.com/Database/MySQL/Q_22967482.html

http://www.databasejournal.com/features/mysql/article.php/10897_3355201_2

অনুদান রেপ্লিকেশন স্ল্যাভ চালু 'স্লেভ_পাসওয়ার্ড' দ্বারা দাস_ ব্যবহারকারীকে চিহ্নিত

#Master Binary Logging Config  STATEMENT causes replication 
              to be statement-based -  default

log-bin=Mike
binlog-format=STATEMENT
server-id=1            
max_binlog_size = 10M
expire_logs_days = 120    


#Slave Config
master-host=master-hostname
master-user=slave-user
master-password=slave-password
server-id=2

বাইনারি লগ ফাইল অবশ্যই পড়তে হবে:

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

http://www.mydigitallife.info/2007/10/06/how-to-read-mysql-binary-log-files-binlog-with-mysqlbinlog/

http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html

http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

http://dev.mysql.com/doc/refman/5.1/en/binary-log-setting.html

আপনি রিসেট মাস্টার স্টেটমেন্টের সাথে সমস্ত বাইনারি লগ ফাইলগুলি মুছে ফেলতে পারেন, বা তার একটি উপসেট পুরে মাস্টার দিয়ে মুছে ফেলতে পারেন

--result-file = binlog.txt বিশ্বস্ত ফ্রেন্ড-বিন.000030

নিয়মমাফিককরণ:

http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html

ইউডিএফ ফাংশন

http://www.koders.com/cpp/fid10666379322B54AD41AEB0E4100D87C8CDDF1D8C.aspx

http://souptonuts.sourceforge.net/readme_mysql.htm

তথ্যের ধরণ:

http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html

http://www.informit.com/articles/article.aspx?p=1238838&seqNum=2

http://bitfilm.net/2008/03/24/saving-bytes-efficient-data-storage-mysql-part-1/

একটি বিষয় লক্ষণীয় যে CHAR এবং VARCHAR উভয়ের সাথে একটি মিশ্র টেবিলের উপর, মাইএসকিউএল CHAR এর পরিবর্তনকে VARCHAR এর মধ্যে পরিবর্তন করবে

পুনঃসংখ্যার পূর্ণসংখ্যা_প্রকারটি নিখরচায় স্বয়ংক্রিয় ক্রিমেন্ট নয়, প্রাথমিক কী (রিকনাম)

মাইএসকিউএল সর্বদা স্ট্যান্ডার্ড এসকিউএল এবং আইএসও 8601 নির্দিষ্টকরণ অনুসারে বছরের সাথে তারিখগুলি উপস্থাপন করে

বিবিধ:

কিছু মাইএসকিউএল কার্যকারিতা বন্ধ করে দেওয়ার ফলে ছোট ডেটা ফাইল এবং দ্রুত অ্যাক্সেস হবে। উদাহরণ স্বরূপ:

--datadir ডাটা ডিরেক্টরি উল্লেখ করবে এবং

--স্কিপ-ইনডোডব নির্দোষ বিকল্পটি বন্ধ করে দেবে এবং আপনাকে 10-20M বাঁচাবে

এখানে আরও http://dev.mysql.com/tech-resources/articles/mysql-c-api.html

অধ্যায় 7 ডাউনলোড করুন - বিনামূল্যে

InnoDB লেনদেনমূলক তবে এটির সাথে একটি পারফরম্যান্স ওভারহেড রয়েছে। আমি আমার 90% প্রকল্পের জন্য মাইআইএসএএম টেবিলগুলি পর্যাপ্ত পরিমাণে খুঁজে পেয়েছি। অ-লেনদেন-নিরাপদ সারণীগুলির (মাইআইএসএএম) এর নিজস্ব বিভিন্ন সুবিধা রয়েছে যার সমস্তটি ঘটে কারণ:

ওভারহেডে কোনও লেনদেন নেই:

অনেক দ্রুত

লোয়ার ডিস্ক জায়গার প্রয়োজনীয়তা

আপডেটগুলি সম্পাদনের জন্য কম মেমরির প্রয়োজন

প্রতিটি মাইআইএসএএম টেবিল তিনটি ফাইলে ডিস্কে সঞ্চিত থাকে। ফাইলগুলির নাম রয়েছে যা টেবিলের নাম দিয়ে শুরু হয় এবং ফাইলের প্রকারটি নির্দেশ করতে একটি এক্সটেনশন থাকে। একটি .frm ফাইল টেবিল বিন্যাস সংরক্ষণ করে। ডেটা ফাইলে একটি .MYD (MYData) এক্সটেনশন রয়েছে। ইনডেক্স ফাইলটির একটি .MYI (MYIndex) এক্সটেনশন রয়েছে।

এই ফাইলগুলি করতে মাইএসকিউএল প্রশাসকগণ ব্যাকআপ বৈশিষ্ট্য যা সময় গ্রাসকারী (তাই হয় পুনরুদ্ধার করুন) হল ব্যবহার না করেই অক্ষত একটি সংগ্রহস্থলের অবস্থান অনুলিপি করা

কৌশলটি এই ফাইলগুলির একটি অনুলিপি তৈরি করে টেবিলটি ড্রপ করুন। আপনি যখন ফাইলগুলি পিছনে রাখবেন তখন মাইএসকিউএল সেগুলি সনাক্ত করবে এবং সারণী ট্র্যাকিং আপডেট করবে।

আপনার অবশ্যই ব্যাকআপ / পুনরুদ্ধার করতে হবে,

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

SET AUTOCOMMIT = 0;
SET FOREIGN_KEY_CHECKS=0;

.. your dump file ..

SET FOREIGN_KEY_CHECKS = 1;
COMMIT;
SET AUTOCOMMIT = 1;

পুনরায় লোডের গতি বাড়ানোর জন্য, এসকিউএল কমান্ডটি SET AUTOCOMMIT = 0 যোগ করুন; ডাম্প ফাইলের শুরুতে এবং কমিট যুক্ত করুন; শেষ পর্যন্ত কমান্ড।

ডিফল্টরূপে, অটোকমিট চালু রয়েছে, যার অর্থ ডাম্প ফাইলের প্রতিটি সন্নিবেশ কমান্ডকে পৃথক লেনদেন হিসাবে বিবেচনা করা হবে এবং পরেরটি শুরু হওয়ার আগে ডিস্কে লিখিত হবে। আপনি যদি এই কমান্ডগুলি যোগ না করেন তবে ইনোডিবিতে একটি বৃহত ডাটাবেস পুনরায় লোড করতে অনেক ঘন্টা সময় নিতে পারে ...

মাইএসকিউএল টেবিলের সারিটির সর্বাধিক আকার 65,535 বাইট

মাইএসকিউএল 5.0.3 এ এবং সর্বোচ্চ সারি আকারের (65,535 বাইট) একটি ভ্রচারের কার্যকর সর্বোচ্চ দৈর্ঘ্য

ভোরচারের মানগুলি প্যাড করা হয় না যখন সেগুলি সংরক্ষণ করা হয়। মানক এসকিউএল এর সাথে সংগতি রেখে মানগুলি সংরক্ষণ এবং পুনরুদ্ধার করা হলে ট্রেলিং স্পেসগুলি বজায় রাখা হয়।

মাইএসকিউএল-এ CHAR এবং VARCHAR মানগুলি অনুসরণের জায়গাগুলি বিবেচনা না করে তুলনা করা হয়।

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

মাইএসকিউএল 5.0.3 হিসাবে 255 বর্ণের ভ্রচার সীমা 65535 টি অক্ষরে উন্নীত হয়েছিল

সম্পূর্ণ-পাঠ্য অনুসন্ধানগুলি কেবল মাইআইএসএএম টেবিলের জন্য সমর্থিত।

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

বিএলওবি কলামগুলির কোনও অক্ষর সেট নেই, এবং বাছাই এবং তুলনা কলামের মানগুলিতে বাইটগুলির সংখ্যাসমূহের উপর ভিত্তি করে

যদি কঠোর এসকিউএল মোড সক্ষম না করা হয় এবং আপনি একটি বিএলওবি বা টেক্সট কলামে একটি মান নির্ধারণ করেন যা কলামটির সর্বাধিক দৈর্ঘ্য অতিক্রম করে, মানটি ফিট করার জন্য কাটা হয় এবং একটি সতর্কতা উত্পন্ন হয়।

কার্যকর আদেশ:

কঠোর মোডটি পরীক্ষা করুন: নির্বাচন করুন @@ Global.sql_mode;

কঠোর মোড বন্ধ করুন:

SET @@ গ্লোবাল.এসকিএল_মোড = '';

SET @@ গ্লোবাল.এসকিএল_মোড = 'এমওয়াইএসকিউএল 40'

বা সরান: sql- মোড = "STRICT_TRANS_TABLES, ...

কাছ থেকে কলম দেখান mytable

ভার্চুয়ালকালামের মাধ্যমে virtualcolumnMytable অর্ডার হিসাবে সর্বোচ্চ (নেমকাউন্ট) নির্বাচন করুন

http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-fields.html

http://dev.mysql.com/doc/refman/5.1/en/information-funifications.html#function_last-insert-id last_insert_id ()

বর্তমান থ্রেড সর্বাধিক (pkcolname) এ সন্নিবেশিত সর্বশেষ সারির পিকে আপনি সামগ্রিকভাবে সর্বশেষ পিকে পাবেন।

দ্রষ্টব্য: যদি টেবিলটি খালি থাকে সর্বাধিক (pkcolname) ১ টি mysql_insert_id () স্থানীয় মাইএসকিউএল সি এপিআই ফাংশন mysql_insert_id () কে এক প্রকার দীর্ঘ (পিএইচপি তে নামকরণ করা) রূপান্তর করে to

যদি আপনার অটোপ্রেমেন্ট কলামে বিগিন্টের কলামের ধরণ থাকে তবে mysql_insert_id () দ্বারা ফেরত মানটি ভুল হবে। পরিবর্তে, একটি এসকিউএল কোয়েরিতে অভ্যন্তরীণ মাইএসকিউএল এসকিউএল ফাংশন LAST_INSERT_ID () ব্যবহার করুন।

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

কেবল একটি নোট যে আপনি যখন কোনও টেবিলের মধ্যে ডেটা inোকানোর চেষ্টা করছেন এবং আপনি ত্রুটিটি পান:

Unknown column the first bit of data what you want to put into the table in field list

মত কিছু ব্যবহার

INSERT INTO table (this, that) VALUES ($this, $that)

এর কারণ আপনি সারণীতে লেগে থাকার চেষ্টা করছেন এমন মানগুলির চারপাশে কোনও অ্যাড্রোপ্রফস নেই। সুতরাং আপনার কোডটি এতে পরিবর্তন করা উচিত:

INSERT INTO table (this, that) VALUES ('$this', '$that') 

অনুস্মারক যে `` মাইএসকিউএল ক্ষেত্র, ডাটাবেস বা টেবিলগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়, মানগুলি নয়;)

ক্যোয়ারির সময় সার্ভারের সাথে সংযোগ হারিয়েছে:

http://dev.mysql.com/doc/refman/5.1/en/gone-away.html

http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

http://dev.mysql.com/doc/refman/5.0/en/server-parameters.html

http://dev.mysql.com/doc/refman/5.1/en/show-variables.html

http://dev.mysql.com/doc/refman/5.1/en/option-files.html

http://dev.mysql.com/doc/refman/5.1/en/error-log.html

টিউনিং কোয়েরি

http://www.artfulsoftware.com/infotree/queries.php?&bw=1313

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

চূড়ান্ত মাইএসকিউএল উত্তরাধিকার ডাটাবেস দুঃস্বপ্ন

এখানে উল্লিখিত অনেকগুলি কৌশল ব্যবহার করে টেবিলগুলি দরকারী কিছুতে কার্যকর করার জন্য একাধিক অ্যাপ্লিকেশনগুলির প্রয়োজন।

আপনি যদি এই চমকপ্রদভাবে সহায়ক বলে মনে করেন তবে এটিকে ভোট দিয়ে আপনার ধন্যবাদ প্রকাশ করুন your

আমার অন্যান্য নিবন্ধ এবং সাদা কাগজপত্রগুলি: www.coastrd.com এও দেখুন


22

মাইএসকিউএল এর এত গোপনীয় বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল এটি এসকিউএল অনুগত হওয়ার পক্ষে খুব ভাল নয়, ভাল, বাগগুলি সত্যই নয়, তবে আরও গোচাচা ... :-)


অন্য চিঠিপত্রগুলি জানুন যে এমএসএসকিউএল থেকে মাইএসকিউএল যাওয়ার সময় এই তালিকাটি মূল্যবান হয়েছে। চিয়ার্স মাদুর
গেটকিলার

এই গোটাচা অনেকগুলি মাইএসকিউএল এর পূর্ববর্তী সংস্করণ থেকে।
jmucchiello

একটির জন্য, আমি মনে করি না যে কোনও টাইমস্ট্যাম্প ক্ষেত্রটিতে কোনও নুল মান দেওয়া সম্ভব হবে।
মাদুর

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

1
আপনি কিছু গ্যাটাচগুলি অক্ষম করতে পারেনSET SESSION sql_mode='ANSI';
কর্নেল

21

ক্যাশে বর্তমানে কী সারণী রয়েছে তা সন্ধান করার জন্য একটি আদেশ:

mysql> SHOW open TABLES FROM test;
+----------+-------+--------+-------------+
| DATABASE | TABLE | In_use | Name_locked |
+----------+-------+--------+-------------+
| test     | a     |      3 |           0 |
+----------+-------+--------+-------------+
1 row IN SET (0.00 sec)

( মাইএসকিউএল সম্পাদনা ব্লগ থেকে )


15

কে কী করছে তা জানার জন্য একটি আদেশ:

mysql> show processlist;
show processlist;
+----+-------------+-----------------+------+---------+------+----------------------------------+------------------+
| Id | User        | Host            | db   | Command | Time | State                            | Info             |
+----+-------------+-----------------+------+---------+------+----------------------------------+------------------+
|  1 | root        | localhost:32893 | NULL | Sleep   |    0 |                                  | NULL             |
|  5 | system user |                 | NULL | Connect |   98 | Waiting for master to send event | NULL             |
|  6 | system user |                 | NULL | Connect | 5018 | Reading event from the relay log | NULL             |
+-----+------+-----------+---------+---------+-------+-------+------------------+
3 rows in set (0.00 sec) 

এবং আপনি এর মাধ্যমে একটি প্রক্রিয়াটি হত্যা করতে পারেন:

mysql>kill 5 

5
আপনি যদি প্রশ্নগুলি কেটে না চান তবে সম্পূর্ণ প্রক্রিয়াটিও দেখান।
গ্রেগ

11

আমি বিশেষত মাইএসকিউএল এর অন্তর্নির্মিত সমর্থন পছন্দ করি inet_ntoa()এবং এর জন্য inet_aton()। এটি টেবিলগুলিতে আইপি অ্যাড্রেসগুলি হ্যান্ডলিংকে খুব সোজা করে তোলে (কমপক্ষে এতক্ষণ যেগুলি কেবলমাত্র আইপিভি 4 ঠিকানা হিসাবে রয়েছে!)


2
পোস্টগ্রাএসকিউএল-তে খুব সুন্দর একটি ইনসাইট টাইপ রয়েছে, যা আইপিভি 4 এবং আইপিভি 6 খুব স্পষ্টভাবে পরিচালনা করে :-)
মাদুর

আমি তাদের খুব পছন্দ করতাম, তবে এগুলি ব্যবহার না করা আরও ভাল। পোস্টগ্রিসের জন্য +1।
কর্নেল

11

আমি on duplicate keyঅলসভাবে তৈরি সমস্ত ধরণের কাউন্টারগুলির জন্য (একে একে উপস্থাপনা, সংহতকরণ) পছন্দ করি:

insert into occurances(word,count) values('foo',1),('bar',1) 
  on duplicate key cnt=cnt+1

আপনি একটি ক্যোয়ারিতে অনেকগুলি সারি সন্নিবেশ করতে পারেন এবং প্রতিটি সারিটির জন্য তত্ক্ষণাত্ সদৃশ সূচকটি পরিচালনা করতে পারেন।


10

আবার - আসলে লুকানো বৈশিষ্ট্য নয়, তবে সত্যই কার্যকর:

বৈশিষ্ট্য

সহজেই ডিডিএল ধরুন:

SHOW CREATE TABLE CountryLanguage

আউটপুট:

CountryLanguage | CREATE TABLE countrylanguage (
  CountryCode char(3) NOT NULL DEFAULT '',
  Language char(30) NOT NULL DEFAULT '',
  IsOfficial enum('T','F') NOT NULL DEFAULT 'F',
  Percentage float(4,1) NOT NULL DEFAULT '0.0',
  PRIMARY KEY (CountryCode,Language)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

বৈশিষ্ট্য: GROUP_CONCAT () সমষ্টিগত ফাংশন বিশদভাবে তার যুক্তিগুলির একটি সংক্ষিপ্ত স্ট্রিং তৈরি করে এবং গোষ্ঠী অনুসারে এইগুলি যুক্ত করে সম্মিলিত করে।

উদাহরণ 1: সহজ

SELECT   CountryCode
,        GROUP_CONCAT(Language) AS List
FROM     CountryLanguage
GROUP BY CountryCode             

আউটপুট:

+-------------+------------------------------------+
| CountryCode | List                               |
+-------------+------------------------------------+
| ABW         | Dutch,English,Papiamento,Spanish   |
. ...         . ...                                .
| ZWE         | English,Ndebele,Nyanja,Shona       |
+-------------+------------------------------------+

উদাহরণ 2: একাধিক যুক্তি

SELECT   CountryCode
,        GROUP_CONCAT(
             Language
,            IF(IsOfficial='T', ' (Official)', '')
         )               AS List
FROM     CountryLanguage
GROUP BY CountryCode

আউটপুট:

+-------------+---------------------------------------------+
| CountryCode | List                                        |
+-------------+---------------------------------------------+
| ABW         | Dutch (Official),English,Papiamento,Spanish |
. ...         . ...                                         .
| ZWE         | English (Official),Ndebele,Nyanja,Shona     |
+-------------+---------------------------------------------+

উদাহরণ 3: একটি কাস্টম বিভাজক ব্যবহার করে

SELECT   CountryCode
,        GROUP_CONCAT(Language SEPARATOR ' and ') AS List
FROM     CountryLanguage
GROUP BY CountryCode

আউটপুট:

+-------------+----------------------------------------------+
| CountryCode | List                                         |
+-------------+----------------------------------------------+
| ABW         | Dutch and English and Papiamento and Spanish |
. ...         . ...                                          .
| ZWE         | English and Ndebele and Nyanja and Shona     |
+-------------+----------------------------------------------+

উদাহরণ 4: তালিকা উপাদানের ক্রম নিয়ন্ত্রণ করা

SELECT   CountryCode
,        GROUP_CONCAT(
         Language
         ORDER BY CASE IsOfficial WHEN 'T' THEN 1 ELSE 2 END DESC
         ,        Language
         )               AS List
FROM     CountryLanguage
GROUP BY CountryCode

আউটপুট:

+-------------+------------------------------------+
| CountryCode | List                               |
+-------------+------------------------------------+
| ABW         | English,Papiamento,Spanish,Dutch,  |
. ...         . ...                                .
| ZWE         | Ndebele,Nyanja,Shona,English       |
+-------------+------------------------------------+

বৈশিষ্ট্য: একাধিক অভিব্যক্তি সহ COUNT (DISTINCT)

সংমিশ্রণের সংখ্যা গণনা করতে আপনি একটি COUNT (DISTINCT ...) প্রকাশে একাধিক অভিব্যক্তি ব্যবহার করতে পারেন।

SELECT COUNT(DISTINCT CountryCode, Language) FROM CountryLanguage

বৈশিষ্ট্য / গোটচা: GROUP BY তালিকায় অ-সমষ্টিভুক্ত অভিব্যক্তি অন্তর্ভুক্ত করার দরকার নেই

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

SELECT     Country.Code, Country.Continent, COUNT(CountryLanguage.Language)
FROM       CountryLanguage 
INNER JOIN Country 
ON         CountryLanguage.CountryCode = Country.Code
GROUP BY   Country.Code

বৈধ নয়, কারণ নির্বাচনী তালিকায় অ-সমষ্টিযুক্ত কলাম দেশ C কনটেন্ট রয়েছে যা গ্রুপ বাই তালিকাতে উপস্থিত হয় না। এই আরডিবিএমএস-এ, আপনাকে অবশ্যই গ্রোপ বাই তালিকাটি পড়তে হবে

GROUP BY   Country.Code, Country.Continent

বা আপনাকে অবশ্যই দেশ.সাহীমতে কিছু অজ্ঞান সমষ্টি যুক্ত করতে হবে, উদাহরণস্বরূপ

SELECT     Country.Code, MAX(Country.Continent), COUNT(CountryLanguage.Language)

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

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

এর সাথে গোচাটি হ'ল আপনি অ-সমষ্টিযুক্ত কলামটি ব্যবহার করার ক্ষেত্রে মাইএসকিউএল আপনাকে সুরক্ষা দেয় না। সুতরাং, এর মতো একটি কোয়েরি:

SELECT     Country.Code, COUNT(CountryLanguage.Language), CountryLanguage.Percentage
FROM       CountryLanguage 
INNER JOIN Country 
ON         CountryLanguage.CountryCode = Country.Code
GROUP BY   Country.Code

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

দেখুন: ডেবিং গ্রুপ অনুসারে মিথ


গোষ্ঠীতে ঘোষিত না কলামগুলির মঞ্জুরি দেওয়া ওরাকল থেকে আসা আমার মধ্যে অন্যতম প্রিয় বৈশিষ্ট্য। আপনি যদি ওরাকল এর সাথে অভ্যস্ত হন তবে এটি একটি বড় গ্যাটাচা - এটি আপনাকে ক্যোয়ারি চালাতে দেয়, ফলাফলগুলি ঠিক দেখতে দেয় তবে আপনি বুঝতে পারেন যে এটি আপনাকে যা বলেছিল তা করছে না।
এমবাফোর্ড

7

ক্লায়েন্টে "পেজার" কমান্ড

যদি আপনি পেয়ে থাকেন, বলুন, আপনার ফলাফলের মধ্যে 10,000 সারি রয়েছে এবং সেগুলি দেখতে চান (এটি "কম" এবং "টি" কমান্ড উপলব্ধ বলে মনে করে, যা সাধারণত লিনাক্সের অধীনে হয়; উইন্ডোজ ওয়াইএমএমভিতে।)

pager less
select lots_of_stuff FROM tbl WHERE clause_which_matches_10k_rows;

এবং আপনি এগুলিকে "কম" ফাইল দর্শনে পাবেন যাতে আপনি সেগুলির মাধ্যমে সুন্দরভাবে পৃষ্ঠা তৈরি করতে পারেন, অনুসন্ধান করতে পারেন etc.

এছাড়াও

pager tee myfile.txt
select a_few_things FROM tbl WHERE i_want_to_save_output_to_a_file;

সুবিধামত একটি ফাইল লিখতে হবে।


দুর্ভাগ্যক্রমে উইন্ডোজগুলির নীচে, "কম" এবং "টি" বিদ্যমান থাকলেও পেজার বিকল্পটি নিজেই সমর্থিত নয়। যাইহোক সহজে হয় না
বেরি সাকালা

6

কিছু জিনিস যা আপনাকে আকর্ষণীয় মনে করতে পারে:

<query>\G -- \G in the CLI instead of the ; will show one column per row
explain <query>; -- this will show the execution plan for the query


3

এখানে আমার কয়েকটি টিপস রয়েছে - আমি তাদের সম্পর্কে আমার ব্লগে ব্লগ করেছি ( লিঙ্ক )

  1. ভেরিয়েবলগুলি ঘোষণাকালে আপনাকে '@' চিহ্ন ব্যবহার করার দরকার নেই।
  2. কোনও বিবৃতি শেষের সীমা নির্ধারণ করতে আপনাকে একটি ডিলিমিটার (ডিফল্টটি ';') ব্যবহার করতে হবে - লিঙ্কের
  3. আপনি যদি এমএস-এসকিউএল 2005 এবং মাইএসকিউএল এর মধ্যে ডেটা স্থানান্তরিত করার চেষ্টা করছেন তবে কিছুটা হুপ আছে - লিঙ্ক
  4. মাইএসকিউএলে সংবেদনশীল মিলগুলি করছেন - লিঙ্ক matches

3

আপনি যদি বৃহত্তর এবং / বা উচ্চ লেনদেনের সাথে কাজ করতে যাচ্ছেন ইনোডিবি ডাটাবেসগুলি "ইনোডব পরিস্থিতি দেখান" মাইএসকিএল পারফরম্যান্স ব্লগ শিখতে এবং বুঝতে পারে তবে এটি আপনার বন্ধু হয়ে যাবে।


3

যদি সেমিডলাইন মাইএসকিউ ব্যবহার করে থাকে তবে আপনি কমান্ড লাইনটি (লিনাক্স মেশিনে - উইন্ডোজের সমান প্রভাব রয়েছে কিনা তা নিশ্চিত নন) সাথে shriek / বিস্মৃত চিহ্ন চিহ্ন ব্যবহার করে যোগাযোগ করতে পারেন। উদাহরণ স্বরূপ:

\! cat file1.sql

file1.sql এর কোড প্রদর্শন করবে। আপনার বিবৃতি এবং কোনও ফাইলটিতে ক্যোয়ারী সংরক্ষণ করতে টি-র সুবিধাটি ব্যবহার করুন

\T filename

এটি বন্ধ করতে ব্যবহার \ t

শেষ পর্যন্ত আপনি ইতিমধ্যে সংরক্ষিত স্ক্রিপ্টটি চালাতে, "উত্স ফাইল নাম" ব্যবহার করুন। অবশ্যই, কমান্ড লাইন থেকে মাইএসকিএল শুরু করার সময় সাধারণ বিকল্পটি হ'ল স্ক্রিপ্টের নামটি পরিচালনা করা:

    mysql -u root -p < case1.sql

আশা করি কারও কাজে লাগবে!

সম্পাদনা: সবেমাত্র আরেকটি মনে পড়ে - কমান্ড লাইন থেকে মাইএসকিএল চালনার সময় আপনি -t সুইচটি ব্যবহার করতে পারেন যাতে আউটপুটটি টেবিল বিন্যাসে থাকে - কিছু প্রশ্নের সাথে একটি আসল বরন (যদিও এখানে অন্য কোথাও উল্লিখিত হিসাবে \ জি দিয়ে প্রশ্নগুলি সমাপ্ত করে দেওয়া হয়) এই ক্ষেত্রে সহায়ক)। বিভিন্ন সুইচ কমান্ড লাইন সরঞ্জামে আরও অনেক কিছু

একটি সাজানোর ক্রম পরিবর্তন করার জন্য কেবল একটি ঝরঝরে উপায় খুঁজে পেয়েছি (সাধারণত কেস ব্যবহার করুন ...) আপনি যদি কোনও সাজানোর ক্রম পরিবর্তন করতে চান (সম্ভবত 1, 2, 3 এর পরিবর্তে 1, 4, 3, 2 দ্বারা সাজান) 4) আপনি ক্লজ দ্বারা আদেশের মধ্যে ফিল্ড ফাংশন ব্যবহার করতে পারেন। উদাহরণ স্বরূপ

ক্ষেত্র অনুসারে অর্ডার করুন (সাজান_ফিল্ড, 1,4,3,2)


3

আমি মনে করি না এটি মাইএসকিউএল নির্দিষ্ট, তবে আমার জন্য আলোকিত:

লেখার বদলে

WHERE (x.id > y.id) OR (x.id = y.id AND x.f2 > y.f2) 

আপনি শুধু লিখতে পারেন

WHERE (x.id, x.f2) > (y.id, y.f2)

এটি সত্যিই দুর্দান্ত তবে এর জন্য কিছু ক্ষেত্রে কী ব্যবহার হবে?
আম ড্রঙ্ক

প্রদত্ত রেকর্ডের চেয়ে বড় যে সমস্ত রেকর্ড রয়েছে তা সন্ধানের জন্য এটি কার্যকর হতে পারে।
ফ্যানটিয়াস

2

mysqlsla - একটি খুব সাধারণভাবে ব্যবহৃত ধীর ক্যোয়ারী লগ বিশ্লেষণ সরঞ্জাম। আপনি সর্বশেষ 10 টি সবচেয়ে খারাপ প্রশ্ন দেখতে পারেন যেহেতু আপনি সর্বশেষে স্লো ক্যোয়ারী লগগুলি রোলড করেছেন। এটি আপনাকে বিএডি ক্যোয়ারী বার করা হয়েছিল এবং সার্ভারে মোট কত সময় লেগেছে তা বলতে পারে।


2

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

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

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



1

ডিফল্টরূপে InnoDB সমস্ত টেবিলকে একটি বৈশ্বিক টেবিল স্পেসে সঞ্চয় করে যা কখনই সঙ্কুচিত হবে না

আপনি innodb_file_per_tableটেবিল বা ডাটাবেসটি ফেলে দেওয়ার সময় প্রতিটি টেবিলকে আলাদা টেবিল স্পেসে রাখবে যা মুছে ফেলা হবে use

আপনি অন্যথায় স্থান দাবী করতে ডাটাবেস ডাম্প এবং পুনরুদ্ধার করতে হবে যেহেতু এই জন্য এগিয়ে পরিকল্পনা।

প্রতি টেবিল টেবিল স্পেস ব্যবহার করে


1

আপনি যদি ডেটটাইম কলামে খালি স্ট্রিংয়ের মান "" sertোকান তবে মাইএসকিউএল মান 00/00/0000 00:00:00 হিসাবে ধরে রাখবে। ওরাকল থেকে পৃথক, যা নাল মান সাশ্রয় করবে।


1

বড় ডেটাসেট এবং DATETIME ক্ষেত্র সহ আমার বেঞ্চমার্কের সময়, এই কোয়েরিটি করা সর্বদা ধীর:

SELECT * FROM mytable
WHERE date(date_colum) BETWEEN '2011-01-01' AND ''2011-03-03';

এই পদ্ধতির চেয়ে:

SELECT * FROM mytable
WHERE date_column BETWEEN '2011-01-01 00:00:00' AND '2011-03-03 23:59:59'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.