برای استفاده از تمام امکانات سایت از جمله مرکز دانلود باید در سایت عضو شوید. برای ثبت نام تنها 1 دقیقه زمان نیاز دارید ، برای ثبت نام اینجا کلیک کنید

صفحه اول انجمنها
ثبت نامجستجوراهنماي انجمنليست اعضااتاق چت (0)گروه هاي كاربرانمرکز دانلودورود

پاسخ به يك موضوع صفحه 1 از 1
کار با My sql server
نويسنده پيغام

پاسخ بصورت نقل قول
ارسال کار با My sql server 
بررسی اجزای تشکیل دهنده ی یک بانک اطلاعاتی
قبل از شروع کار با MySQL لازم است نکات کلی در مورد بانک اطلاعاتی را بدانید و با آن ها آشنا شوید. بانک اطلاعاتی یک سیستم نگهداری داده هاست که داده ها را به صورت منظم و جزء به جزء دسته بندی می کند. یعنی در واقع یک بانک اطلاعاتی مجموعه ای از داده های زیاد و یا کم را برای شما سازماندهی می کند. به طور کلی در یک بانک اطلاعاتی ما با سه بخش زیر سرو کار داریم : جدول ها ، رکوردها و فیلدها.
جدول : هر جدول در بانک اطلاعاتی مجموعه ای از داده های دسته بندی شده و مرتبط با آن بانک اطلاعاتی هستند که در واحدی مجزا به نام جدول نگهداری می شوند. اما نام گذاری این مجموعه به نام جدول به آن خاطر است که داده های شما به صورت سطر و ستون ها دسته بندی می شوند و همان طور که می دانید مجموعه ای از سطر و ستون ها در دنیای خارج از کامپیوتر نیز جدول نامیده می شوند.
رکوردها یا سطرها : رکوردها در واقع همان سطرهای جدول را تشکیل می دهند که جزیی از جدول می باشند. (که جدول نیز خود جزیی از بانک اطلاعاتی می باشد) رکوردها شامل اطلاعات مرتبط به هم در مورد یک فرد شی و یا ... می باشند که ارتباط نزدیکی به هم دارند و همدیگر را کامل می کنند.
فیلدها: هر سطر از جدول ها نیز از بخش های کوچکی به نام فیلد تشکیل شده است. دقت کنید که فیلد را با ستون اشتباه نگیرید. با ارائه ی مثالی تفاوت بین فیلد و ستون را بیان می کنیم و به تثبیت مفاهیم ارائه شده می پردازیم.

مثال : برای مثال ما جدولی با مشخصات زیر داریم (در مورد کارکنان یک شرکت ) :
شماره ی کاربرینام و نام خانوادگیمیزان تحصیلاتمحل سکونت89471علی احمدیلیسانسایلام349871محمدرض ا علی مرادیفوق دیپلمتهران
این شکل یک جدول از بانک اطلاعاتی را نشان می دهد که دارای 2 رکورد است.همان طور که می بینید قسمت آقای محمدرضا علی مرادی زرد شده است. به این قسمت یک فیلد می گویند و مجموعه ی دو فیلد علی احمدی و محمدرضا علی مرادی یک ستون را تشکیل می دهند. امیدوارم که با این مثال تفاوت بین ستون و فیلد را متوجه شده باشید. (پس به هر یک از این خانه های واحد یک فیلد Field می گویند)
استفاده از برنامه ی MySQL Monitor :
خوب حال می رسیم به نحوه ی استفاده از MYSQL . بانک اطلاعاتی مورد بحث ما یک واسط خط فرمان با نام MySQL Monitor ارائه می دهد که با استفاده از آن می توانید به MySQL دستورات مربوطه را بدهید تا بانک اطلاعاتی آن دستور را اجرا کند. برای استفاده از MySQL در هر دو سیستم عامل Linux و ویندوز می توانید دستور زیر را در سطر فرمان صادر کنید :
$> mysql -u root -p password
البته در مورد سیستم عامل ویندوز نسخه ی جدید MySQL یعنی نسخه ی 5 یک میانبر برای این کار در قسمت All Programs قرار می دهد که با اجرای آن فقط رمز عبور مدیریت بانک اطلاعاتی را از شما می پرسد و وارد MySQL Monitor می شود. (رمز مدیر همان رمزی است که در هنگام نصب MySQL وارد کرده اید. دقت کنید که شما باید با چگونگی نصب MySQL آشنا باشید و آن را بر روی سیستم خود نصب کرده باشید.
پس از ورود به قسمت MySQL Monitor پیغامی همانند زیر برای شما نمایان می شود :
Welcome To The MySQL Monitor. Commands End With : or g.
Your MySQL Connection id is = 7 to server version: 5.1.0
Type 'help;' or 'h' for help. Type c to clear the buffer
mysql>
پس از دریافت اعلان MySQL Monitor به صورت "<mysql" می توانید دستورات SQL را به ترتیب در این قسمت اجرا کنید. برای شروع کار دستور زیر را در خط فرمان وارد کنید :
mysql> use test;
در این صورت برنامه به این صورت به شما پاسخ می دهد: Database Changed
این پیغام به معنی آن است که بانک اطلاعاتی test که در هنگام نصب ایجاد می شود و برای تمرین و تست بانک های اطلاعاتی ایجاد می شود به بانک اطلاعاتی جاری تغییر یافت.
اما حال می رویم سراغ این که چگونه با استفاده از خط فرمان یک بانک اطلاعاتی جدید ایجاد کنیم. ایجاد بانک اطلاعاتی با استفاده از دستور Create Database DbName انجام می شود که به جای DbName نام بانک اطلاعاتی قرار می گیرد. برای مثال دستور زیر را در نظر بگیرید :
mysql> create database our_new_test;
لطفا به چگونگی پایان دستورها توجه کنید چون هر دستور با استفاده از یک ";" پایان می یابد. پس از Enter کردن این دستور برنامه این گونه به شما پاسخ می دهد :
Query OK, 1 row affected (0.01 sec)
این پاسخ بیانگر آن است که جدول موردنظر با موفقیت ظرف مدت 1 صدم ثانیه ! ایجاد شده و یک سطر را تحت تاثیر قرار داده است. دقت کنید که MySQL یکی از سریع ترین بانک های اطلاعاتی است به همین دلیل احتمالا از مدت زمان ایجاد یک بانک اطلاعاتی شگفت زده شده اید !
خوب حالا ما یک بانک اطلاعاتی را ساخته ایم. می خواهیم یک جدول نمونه هم در آن ایجاد کنیم. برای این کار ابتدا شما باید بانک اطلاعاتی جاری را به بانک اطلاعاتی جدیدی که ساختیم تغییر دهیم.
برای تغییر بانک اطلاعاتی جاری از دستور use DbName استفاده می کنیم که در آن به جای DbName نام بانک اطلاعاتی مورد نظر را می نویسید. دقت کنید در MySQL تا زمانی که یک بانک اطلاعاتی را فعال ننمایید نمی توانید هیچ گونه عملیاتی مثل ایجاد جداول و یا حذف آن ها و ... انجام دهید. پس اولین مرحله همیشه بانک اطلاعاتی مورد نظر خود را فعال نمایید. پس برای فعال کردن بانک اطلاعاتی جدیدی که ساختیم باید دستور زیر را در خط فرمان وارد نماییم :
mysql> use our_new_test;
بعد از فعال کردن بانک اطلاعاتی مورد نظر دستورات زیر را برای ایجاد یک جدول نمونه در بانک اطلاعاتی وارد کنید (این دستور در قسمت های بعدی به طور کامل تشریح خواهد شد) :
mysql> create table ourtable (
id int(20) auto_increment not null,
subject char(100) not null,
date date not null );
همان طور که می بینید ایجاد جدول با استفاده از دستور create table انجام می شود که پس از آن نام جدول قرار می گیرد و ستون های جدول در یک پرانتز باز و بسته بعد از آن قرار می گیرند. به چگونگی نوشتن بلاک ستون ها در این قسمت توجه کنید. در قسمت اول یک ستون با نام id ایجاد شده که از نوع عدد (int) هست که حداکثر طول آن 20 کاراکتر است و به طور اتوماتیک از 1 پر خواهد شد همچنین این ستون هیچ گاه نباید خالی باشد. بعد از پایان دستور هر ستون دقت کنید که یک کاراکتر کامل "," قرار گرفته است تا ستون ها را از هم جدا کند.
حال جدول ما ایجاد شده است برای مشاهده ی جدول های موجود در بانک اطلاعاتی our_new_test باید دستور زیر را در خط فرمان وارد کنید :
mysql> show tables;
با صدور این فرمان MySQL Monitor پیغامی همانند پیغام زیر برای شما نمایش خواهد داد :
+------------------------+
- Tables_in_our_new_test -
+------------------------+
- ourtable -
+------------------------+
برای مشاهده ی محتویات جدول ourtable هم می توانید از دستوز describe ourtable استفاده کنید.


پاسخ بصورت نقل قول
ارسال بانکهای اطلاعاتی رابطه ای : مفاهیم و تعاریف 
قبل از پرداختن به موضوع بانک های اطلاعاتی رابطهای (Relational Data Base) ، بهتر است اشاره ای به مفاهيم ذيلداشته باشيم :
موجوديت (Entity)
بههر چيزی (شی ، شخص ، محل و...) که می خواهيم در يک سيستم راجع به آن اطلاعاتی را جمع آوری ، پردازش و نگهدارینمائيم ، يک موجوديت گفته می شود . تعريف فوق ، متداولترين برداشت اوليه از موجوديتمی باشد . مجموعه موجوديت های يک سيستم ، ساختار اطلاعاتی آن سيستم را مشخص می كند. هر موجوديت شامل اجزاء و المان هائی است که آن موجوديت را توصيف می كند كه بهآنها خصيصه و يا Attribute گفته می شود . هر موجوديت بسته به اين كه در سيستم موردمطالعه چه ميزان اطلاعات راجع به آن می خواهيم داشته باشيم ، شامل حداقل يک و ياچند خصيصه خواهد بود. از آنجا که هر موجوديت راجع به يک موضوع به خصوص می باشد ،بنابراين يک ارتباط منطقی بين کليه خصايص موجوديت وجود خواهد داشت .در واقع ،‌ تمامخصائص يک موجوديت توصيف کننده آن موجوديت خواهد بود . برای روشن شدن موضوع بد نيستبه نمونه مثال ذيل توجه نمائيد :
-موجوديتمشتری شامل خصلت های نام مشتری ، آدرس مشتری ، تلفن مشتری و ... است .
- موجوديت سفارش شامل خصلت های شماره سفارش ، تاريخ سفارش ، نام مشتری ، کالای سفارششده ، تعداد کالای سفارش شده و ... استهمانگونه که در مثال فوق مشاهده گرديد ،تمام خصلت های موجوديت مشتری توصيف کننده يک مشتری و تمام خصلت های موجوديت سفارشتوصيف کننده يک سفارش می باشند.
کليد (Key)
هررخداد از يک موجوديت را بايد بتوان به وسيله يک و يا ترکيبی از چند خصيصه آن بهصورت يکتا شناسائی نمود . به تعبير ديگر ، هر يک از رخدادهای يک موجوديت بايد يکتاباشد ، در غير اينصورت تغيير و يا حذف يک رخداد از موجوديت (در مثال فوق يک مشتری) غير ممکن خواهد بود . از اينرو از بين خصلت های يک موجوديت يک و يا ترکيبی از چندخصيصه به عنوان کليد آن موجوديت انتخاب می شود . اين خصلت (و يا ترکيب خصلت ها) بايد بتواند يکتائی هر رخداد از موجوديت را تضمين نمايد . در موجوديت سفارش مثالفوق ، خصلت شماره سفارش می تواند بعنوان کليد انتخاب شود .
توضيح: در برخیاز موارد در يک موجوديت چندين کليد وجود دارد كه به هر يک از آنها يک Candidate Key يا Alternate Key گفته می شود .
در برخی از حالات نمی توان در يک موجوديت هيچکانديدی براي کليد يافت ، مانند موجوديت مشتری در مثال فوق . در اين موجوديت هيچيكاز خصلت ها و يا هيچ ترکيبی از آنها نمی تواند صد درصد تضمين کننده يکتائی آن باشد(با اينکه احتمال وجود دو مشتری هم نام در يک آدرس و با يک شماره تلفن بسيار کم است، اما باز هم احتمال وقوع دارد) . در چنين مواردی مجبور هستيم يک خصلت به موجوديتاضافه کنيم تا تضمين کننده يکتائی رخدادهای آن باشد . در مثال فوق با اضافه کردنخصلت کد مشتری به موجوديت مشتری ، می توان يکتائی آن را تضمين نمود . به اين نکتهدقت شود که بسياری از خصلت های يک موجوديت در کنترل سيستم نيست و از خارج به سيستمتحميل می گردد . به عنوان مثال ما نمی توانيم تعيين کنيم که نام مشتری های سازمانتکراری نباشد . اما عدم تکراری بودن خصلت هائی که خود ما ايجاد نموده ايم را میتوان تضمين کرد ( نظير کد مشتری که توسط سيستم و يا سازمان مربوطه توليد می شود ) .
کليد اصلی (Primary Key)از بين کليدهای يک موجوديت(Candidate Key) ، می بايست يک کليد را به عنوان کليد اصلی انتخاب نمود . معيارهایمختلفی در اين انتخاب دخيل هستند ، اما معمولا" بهترين کليدی که معرف مفهوم و ماهيتموجوديت باشد به عنوان کليد اصلی انتخاب می گردد .
وابستگی تابعی (Functional Dependency)
وابستگی تابعی مفهومی است که مابين خصلت هایيک موجوديت تعريف می گردد . به اين معني که می گوئيم خصلت A با خصلت B وابستگیتابعی دارد ، در صورتيکه به ازای هر مقدار مشخص از خصلت B بتوان مقدار مشخص ويکتائی از خصلت A را بدست آورد ، اما عکس آن ممکن است صادق نباشد . در موجوديتمشتری مثال قبل ، به ازای هر کد مشتری می توان نام او را بدست آورد در اين صورت میگوئيم خصلت نام مشتری با خصلت کد مشتری وابستگی تابعی دارد . اما عکس آن صادق نيستچرا که به ازای يک نام مشتری مشخص ، نمی توان يک کد مشتری يکتا استخراج نمود (دومشتری مختلف می توانند نام يکسان داشته باشند ، در اين حالت يک نام مشتری ممکن استمتناظر با دو و يا حتی چند کد مشتری باشد).
نواع رابطه بينخصلت های يک موجوديتبينخصلت های يک موجوديت سه نوع رابطه وجود دارد :
- رابطه يک به يک (One To One) : در حالتی اتفاق می افتد که خصلت A وابستگی تابعی به خصلت B داشتهباشد و خصلت B نيز وابستگی تابعی به خصلت A داشته باشد . در اين حالت هر دو خصلت A و B کانديدای کليد شدن می باشند.
- رابطه يک به چند (One To Many) : اگر خصلت A وابستگی تابعی به خصلت B داشته باشد و عکس آنصادق نباشد ، يك ارتباط از نوع يک به چند وجود خواهد داشت . در اين حالت ، خصلت B کانديد کليد شدن است و خصلت A صرفا" يکی از توصيف گرهای موجوديت محسوب می گردد .
- رابطه چند به چند (Many To Many) : اگردو خصلت هيچکدام وابستگی تابعی به يکديگر نداشته باشند آنگاه رابطه بين آنها چند بهچند خواهد بود . در اين حالت هيچيکدام از آنها کانديد کليد شدن نبوده (ممکن استترکيب آنها کانديد کليد شدن باشد) و صرفا" توصيف کننده موجوديت خواهند بود .
هنجار سازی (Normalization)
هنجار سازی ، فرآيندی استكه طی آن يك موجوديت جهت به حداقل رسانی نابهنجاری های بوجود آمده در خلال تغييراتاعمال شده بر روی رخدادهاي يک موجوديت مورد بررسی و تبديل قرار می گيرد. اگر اينفرآیند به طور صحيح بر روی يک موجوديت اعمال نگردد ، آنگاه نمی توان هيچ تضمينی درخصوص حفظ يکپارچگی اطلاعات آن موجوديت ارائه داد . فرآيند هنجار سازی به دليل اهميتو گستردگی آن در مقاله ای جداگانه تشريح خواهد شد.
نابهنجاریبه پيامدهای ناخواسته تغيير اطلاعات نابهنجاری گفته می شود .
Relation
موجوديت ها در مدل منطقی داده های سيستم موردبحث و بررسی قرار می گيرند و پس از طی فرآيند هنجارسازی در مرحله فيزيکی به صورتماتريسهای دوبعدی مشتمل بر سطرها (رخدادهاي مختلف يک موجوديت) و ستون ها (خصلت هایمختلف آن موجوديت) تعريف می گردند . هر يک از اين ماتريس ها را يک ارتباط ياRelation می نامند که در مدل فيزيکی معمولا" آنها را با نام جدول (Table) معرفی میکنند . همانطور که پيش از اين اشاره شد تمام خصلت های يک موجوديت با يکديگر ارتباطمنطقی داشته و معرف آن موجوديت می باشند ، از اينرو به اين جداول ارتباط می گويند .
Tuple
هر يک از رخدادهای مختلف يک موجوديت را يک Tuple می گويند که در مدل فيزيکی معمولا" از آنها با نام رديف (Row) و يا رکورد (Record) نام برده می شود . بنابراين Tuples ، رديف های جدول دو بعدی هستند که آن را بهعنوان Relation و يا Table می شناسيم .
Attribute
هريک از خصلت های مختلف يک موجوديت راAttribute می نامند ( نظير کد مشتری ) . معمولا" در مدل فيزيکی به جای Attribute ازفيلد (Field) و يا ستون (Column) استفاده می شود . بنابراين Attributes ، ستون هایجدول دو بعدی هستند که آن را به عنوان Relation و يا Table می شناسيم .
شكل زير يك Relation را به همراه اجزاء آن نشان می دهد .
یك Relation به همراه اجزاءآن
ارتباط(Relationship)
منظور ارتباط بين دو Relation و یا جدول است که براساس برابری فيلدهای يکسان در هر جدول تعريف و دارای انواع مختلفی است . ( به دليلاهميت و گستردگی ، در مقاله ای جداگانه تشريح خواهد شد) . اين ارتباط ها در مدلمنطقی مابين موجوديت ها (خصوصا" موجوديت های نرمال شده ) تعيين می گردند و به آنEntity Relation یا ER سيستم می گويند . مدل ER سيستم توسط ابزارهای مستند سازی جهتدرک بهتر مدل داده ای سيستم ترسيم می گردد که به آنها ERD می گويند .
پس از تشريح برخی از مفاهيم اوليه و در عين حال مهم بانك های اطلاعاتی رابطه ای ، به اختصار می توان گفت که يک بانک اطلاعات رابطه ای مجموعه ای از رابطه ها (Relations) و يا جداول به همراه تمامی ارتباط هائی (Relationship) است که بين آنها وجود دارد . هر بانک اطلاعاتی در خصوص يک سيستم مورد نظر طراحی و ايجاد می گردد ، اما در برخی از سازمان های بزرگ که بين سيستم های مختلف آن ارتباط وجود دارد (نظير سيستم پرسنلی ، حقوق و دستمزد و مالی و ...) ممکن است بانک های اطلاعاتی با يکديگر تجميع و پس از طی فرآيند يکپارچه سازی به صورت يک بانک اطلاعاتی جامع و يکپارچه برای آن سازمان تعريف و ايجاد گردد .
امروزه سيستم های مديريتی بانک های اطلاعاتی رابطه ای مختلفی وجود دارد که هر يک ويژگی ها و قابليت هايی خاص خود را دارند . به اين سيستم ها و يا نرم افزارها اختصارا" RDBMS گفته می شود . MS ACCESS ، MS SQL ، ORACLE ، SYBASE ، نمونه هائی متداول در اين زمينه می باشند .
تمامی سيستم های مديريت بانک های اطلاعاتی رابطه ای به منظور ارائه قابليت های خود و استفاده از آنها از زبان مشترکی که به آن SQL ( برگرفته شده از Structured Query Language ) گفته می شود ، استفاده می نمايند . تمامی نيازها و انتظارات کاربران از بانک های اطلاعاتی نظير جستجوی اطلاعات ، ايجاد ، تغيير و يا حذف اطلاعات حتی ايجاد بانک اطلاعاتی و يا ساير اجزاء مرتبط با آن توسط زبان فوق تعريف و تحويل RDBMS داده خواهد شد تا پس از بررسی بر روی بانک اعمال گردد.


پاسخ بصورت نقل قول
ارسال گذری بر دنیای My SQL 
اکنون می‌خواهیم به‌جای برشمردن مزایا، معایب یا ویژگی‌های این بانک اطلاعاتی، کمی وارد جزئیات ساختار آن شویم و قسمت‌ها و ابزارهای مختلف آن را به‌طور مختصر بررسی کنیم تا وجوه تشابه و تمایز آن را نسبت به سایر بانک‌های اطلاعاتی و به‌ویژه ‌SQLServer مایکروسافت ببینیم.
● هدف از ایجاد MySQL
نسخه‌های اولیه ‌‌MySQL را به هیچ عنوان نمی‌توان با نسخه‌های جدید آن مقایسه‌ نمود. نسخه‌های قدیمی به‌دلیل ماهیت عمومی سیستم‌عاملی که برای آن درنظر گرفته شده بودند (یعنی یونیکس و لینوکس‌های اولیه) دارای واسط کاربر چندان جالبی نبودند و تمام فرامین مربوط به طراحی و مدیریت بانک اطلاعاتی در آن‌ها از طریق دستورات خط فرمان انجام می‌گرفت. اما به‌تدریج و با پیدایش محیط‌های گرافیکی توانمند و زیبا برای لینوکس،‌‌MySQL نیز همانند سایر نرم‌افزار‌های اپن‌سورس تحت لینوکس مراحل تکامل و بهینه شدن هسته و ابزارهای جانبی خود را پیمود تا به جایی رسید که اکنون به عنوان یکی از سریع‌ترین، کاراترین و مقرون به صرفه‌ترین برنامه‌های بانک اطلاعاتی جهان شناخته می‌شود.
غیر از توانمندی‌های مربوط به واسط کاربر و امکانات جانبی، در نسخه‌های جدید MySQL سعی شده‌است نقاط ضعف همیشگی این موتور بانک اطلاعاتی، یعنی نبود سه عنصر مهمِ دید ‌(View)، روال‌های ذخیره شده و تریگرها، تا حدود زیادی رفع شود و اکنون دیگر ‌‌MySQL به دلیل نداشتن این سه عنصر مهم، در رقابت با سایر بانک‌های اطلاعاتی مورد سرزنش و بی‌مهری برنامه‌نویسان و مدیران بانک‌های اطلاعاتی قرار نمی‌گیرد.
به‌طورکلی وقتی به تاریخچه و مراحل تکامل ‌‌MySQL می‌نگریم، سه ویژگی آن، یعنی قابلیت اطمینان، کارایی مناسب و آسانی استفاده را از نکات مورد توجه سازندگان آن در تولید این اثر می‌یابیم. قابلیت اطمینان، از این جهت که یک بانک اطلاعاتی اپن‌سورس و با حمایت یک شبکه توانمند و در همه‌جا حاضری به نام MySQL Network در هرلحظه آماده ارائه خدمت به استفاده کنندگان آن و پشتیبانی از آن‌ها است و به راحتی می‌تواند دربسیاری از کاربردهای تجاری جایگزینی مناسب برای همتایان گرانقیمت خود باشد.
کارایی مناسب، از این لحاظ که با ارائه نسخه‌های متعدد تحت سیستم عامل‌های مختلف و تحت معماری‌های سخت افزاری گوناگون قادر است تا هم در کاربردهای مبتنی برتعداد فرایندهای فراوان ‌(OLTP) و هم در کاربردهای دارای پردازش‌ها و محاسبات سنگین (OLAP) مورد استفاده قرار گیرد. آسانیِ استفاده هم از این‌جهت است که کلیه مراحل استفاده از آن، از دستیابی به فایل‌های مخصوص نصب که به‌طور رایگان قابل دریافت است و هم از این بابت که مراحل نصب و پیکربندی که حداکثر در ده دقیقه در سیستم‌عامل‌های مختلف صورت می‌گیرد. همچنین در زمان بهره‌برداری به شیوه‌ای بسیار آسان و گویا، ابزارهای خود را در اختیار توسعه‌‌دهندگان و مدیران سیستم قرار می‌دهد.
● معماری ‌MySQL
ویژگی اپن‌سورس بودن MySQL باعث شده است معماری داخلی آن، به‌صورت گویا و واضح و در قالب ماجول‌های اساسی یا جانبی آن برای کاربرانش شناخته شده باشد. شکل ۱ به‌طور خلاصه ماجول‌های مختلف موجود در‌‌MySQL را با نامگذاری براساس وظایفشان، نشان می‌دهد.
همانطور که مشاهده می‌کنید ساختار این بانک اطلاعاتی شامل ماجول‌های مختلفی برای انجام‌دادن وظایف مختلف و استاندارد یک موتور پایگاه داده‌ای همه منظوره است. برخی از قسمت‌های اصلی و شیوه عملکرد آن‌ها در‌ MySQL عبارتند از:
▪ مدیریت اتصال
کنترل و ایجاد محدودیت درتعداد اتصالات قابل انجام بین کلاینت‌ها و سرور بانک اطلاعاتی یکی از ماجول‌ها و وظایف اصلی MySQL است. درواقع موتور بانک اطلاعاتی با مدیریت خودکار و ایجاد اشتراک بین کلاینت‌ها در استفاده بهینه از اتصالات موجود نقش مهمی را ایفا می‌کند. درواقع این ماجول سعی می‌کند با ایجاد فضای مشترک، از به وجود آمدن تعداد زیادی اتصالات بی‌کار و بلااستفاده به بانک اطلاعاتی جلوگیری کند و در استفاده کمتر از فضای حافظه و پردازش پردازنده موثر واقع شود.
▪ دستورات و عناصر اصلی
وظایف ماجول‌های مستقر در این قسمت، ایجاد امکان ساخت جداول بانک اطلاعاتی ایندکس‌ها، دیدها، روال‌های ذخیره شده، توابع، تریگرها، و پشتیبانی از دستورات ‌‌SQL ویژه ساخت این عناصر یا خواندن، درج، حذف و تغییر داده‌ها در آنان است.
▪ مدیریت حافظه
یکی از مهم‌ترین کارهایی که یک موتور پایگاه داده‌ای باید انجام دهد، تخصیص و مدیریت حافظه مورد استفاده بانک اطلاعاتی و پردازش‌های مربوط به آن‌ها و همچنین فضای موردنیاز جهت عملیات بافرینگ ورودی و خروجی به‌علاوه عملیات ‌caching برای افزایش سرعت خواندن اطلاعات است. این کار به‌خوبی در‌ MySQL انجام می‌گیرد. ضمن این‌که در زمان ایجاد و نگهداری یک بانک‌اطلاعاتی نیز پارامترهای مختلفی در این زمینه توسط مدیرسیستم و استفاده از ابزارهای مختص‌ MySQL قابل تنظیم است.
▪ موتور ذخیره‌سازی اطلاعات
MySQL دارای ابزارهای متعددی برای ذخیره‌سازی اطلاعات به شیوه‌های گوناگون است. براین‌اساس و درزمان ایجاد یک پایگاه داده، MySQL پرسش‌های خاصی درمورد انتخاب نوع کاربرد بانک اطلاعاتی و انتخاب موتور ذخیره‌سازی مطرح می‌گردد.
در پرسش اول که اختصاص به نوع کاربرد دارد، مدیرسیستم می‌تواند از بین دو نوع پیش فرض یعنی یک پایگاه داده با تعداد زیادی فرایندهای همزمان (OLTP) یا یک پایگاه داده با تعداد زیادی دستورات ویژه خواندن و آنالیز اطلاعات (OLAP) یکی را انتخاب کند یا اقدام به تنظیم دستی نماید.
با این کار و طبق انتخاب وی، سیستم، تعداد اتصالات همزمان پایگاه داده‌ای را که در بحث <مدیریت اتصال> به آن اشاره کردیم تنظیم می‌کند. براین اساس اولویت به کاربرد ‌OLPA داده می‌شود چون اصولاً کاربرد OLTP نیاز به استفاده زمانی کمتری از یک اتصال دارد و بدین سبب می‌تواند تعداد اتصال همزمان بیشتری را مدیریت نماید.
اما درمورد سؤال دوم همانطور که گفتیم، ‌‌MySQL امکان انتخاب نوع ابزار و موتور ذخیره‌سازی را به مدیرسیستم می‌دهد. به عنوان مثال موتور InnoDB به‌طور پیش‌فرض برای کاربردهای ‌‌OLTP و موتوری به‌ نام ‌MyISAM برای کاربردهای OLAP و نگهداری انبوه اطلاعات پرحجم مثل Data Warhousing یا وب سایت‌ها مورد استفاده MySQL قرار می‌گیرد. در ضمن همانطور که در شکل ۱ نیز مشاهده می‌کنید، ‌MySQL نیز همانند سایر بانک‌های اطلاعاتی مشهور،‌ علاوه بر دو موتور مختص به خودش که برشمردیم، راه‌حل‌هایی برای ذخیره‌سازی اطلاعات به‌صورت آرشیو ‌(‌Archive)، تجمعی ‌(‌Federated Servers)، توزیع شده یا خوشه‌ای (‌Cluster) یا حتی بانک‌های اطلاعاتی سریع حافظه‌ای (‌In Memory) و چند نوع دیگر را دارد.
● ویژگی‌های برتر
در ‌‌MySQL معمولاً اکثر روش‌های ساخت و بهره‌برداری از یک بانک‌اطلاعاتی به دو کاربرد OLTP و‌ OLAP ختم می‌شود که موتور بانک اطلاعاتی برای پشتیبانی و کارایی بهینه از هردو کاربرد مذکور، به خوبی ساخته و پرداخته شده است. به عنوان نمونه، در کاربردهای OLTP، وجود سازوکارها و استانداردهای یک بانک اطلاعاتی برای تضمین صحت اطلاعات مثل پشتیبانی کامل از انواع فرایند‌ها ‌(Transaction) و حتی فرایندهای توزیع شده، روابط اطلاعاتی (کلید اولیه، کلیدهای خارجی) و وجود ایندکس‌های منحصر به‌فرد (‌UNIQE INDEX) را می‌توان گواهی براین مسئله دانست. ضمن این‌که موتور ذخیره‌سازی InnODB نیز به نوبه خود با مدیریت فضا و صفحات حاوی اطلاعات (‌Pages)درحال ایجاد نظم و ترتیب در اطلاعات و حذف فضاهای خالی برای افزایش سرعت جستجو است.
این موتور ذخیره‌سازی همچنین قادر است با یک تصویر حایل از اطلاعات چندین جدول یک بانک اطلاعاتی، از تداخل عملیات خواندن با فرایندها (تغییر، درج، حذف) و بروز مشکلات مربوط به قفل شدن رکوردها ‌(‌Blocking) جلوگیری نماید. اما درمورد کاربردهای OLAP، موتور MyISAM با فراهم نمودن یک فضای اطلاعاتی ترابایتی، محیط بسیار وسیعی را برای انباشت اطلاعات و دسترسی سریع به آن‌ها در مواقع موردنظر را پدید آ‌ورده است.
تجربه نشان داده ‌است که بسیاری از شرکت‌های معتبر و سایت‌های اینترنتی مشهور که با مشکل ذخیره‌سازی و آنالیز انبوه اطلاعات مواجه بوده‌اند و سعی داشتند با استفاده از روش‌های توسعه طولی (‌Scale UP) مثل استفاده از سرورهایی با حافظه و هارددیسک‌های پرظرفیت‌تر و سریع‌تر یا پردازنده‌های قدرتمندتر، ظرفیت سیستم خود را بالا ببرند، موفق شدند با روی آوردن به MySQL و استفاده از موتور ذخیره‌سازی ‌‌MyISAM به نوعی دست به توسعه عرضی ‌(‌Scale Out) بسیار مقرون به صرفه‌ای بزنند و تا هشتاددرصد هزینه‌های مربوط به توسعه طولی یا همان ارتقای سخت‌افزاری را کاهش دهند.
● ابزارهای مدیریتی
اپن‌سورس بودن ‌‌MySQL باعث شده‌است بسیاری از شرکت‌ها بتوانند برای هرچه آسان‌تر کردن و پیشرفته‌تر نمودن ابزارها و محیط‌های گرافیکی مبتنی بر MySQL وارد کار شوند و به سرعت کمبود واسط کاربرهای ویژه مدیریت در‌‌MySQL را جبران نمایند. یکی از معتبرترین واسط‌های کاربرهای گرافیکی در زمینه مدیریت، برنامه Query Browser است که شرکت‌‌MySQL آن‌را ساخته و رسمی‌ترین برنامه‌ مدیریت در MySQL است.
این برنامه نیز به صورت رایگان از سایت MySQL.Com قابل دانلود و نصب است. با استفاده از این برنامه قادر خواهید بود جداول، دیدها، توابع و هر‌چه که در یک بانک اطلاعاتی با دستورات SQL باید ساخته شود را طراحی و پیاده‌سازی نمایید. درهمین رده از برنامه‌ها می‌توان به ابزارهای دیگری چون ویزارد پیکربندی (Configuration Wizard) و یا ویزارد مخصوص ارتقا یا مهاجرت به ‌MySQL یعنی ‌‌Migration Wizard و بسیاری برنامه‌های دیگر برای برپایی سرورهای MySQL، عملیات بکآپ‌گیری، کلاسترینگ و امثال آن، نیز اشاره نمود.
شایان ذکر است که برخی از سایر توزیع‌کنندگان‌ MySQL نیز ابزارهای مدیریتی خاص خود را تهیه و ارائه نموده‌اند که مشهورترین آن‌ها محصول شرکت اروپایی SAP موسوم به MAXDB است که نسخه‌ای براساس‌ MySQL می‌باشد و ابزارهای مدیریتی متنوعی مثل DBManager یا‌ SQL Studio ‌را به همراه خود دارد.

----------------------------------------------------------
شرکت نرم‌افزاری ایده‌تک


پاسخ بصورت نقل قول
ارسال مهاجرت به MYSQL 
مهاجرت یک پروژه از یک محیط نرم‌افزاری به محیط مشابه دیگر، همواره بسیار دشوارتر از آغاز آن پروژه در یک محیط مشخص است. درواقع فرایند مهاجرت، از اولین مراحل آن (اتخاذ تصمیم صحیح)، تا بهره‌برداری از سکو یا نرم‌افزارجدید، به نوعی تفکر فنی و مدیریتی خاص نیازمند است. در این مقاله سعی می‌کنیم مزایا، مشکلات و راهکارهای مهاجرت سیستم‌های اطلاعاتی به‌ MySQL را بررسی نماییم.
● اهداف مهاجرت
انتشار نسخه‌های جدید ‌MySQL، به ویژه نسخه پنجم آن با قابلیت‌های فراوان و قیمت ارزان، باعث شده است برای بسیاری از شرکت‌هایی که همواره به ‌دلیل محدودیت مالی، با هزینه‌های خرید، نگهداری و ارتقای سیستم اطلاعاتی خود دست و پنجه نرم می‌کردند، جای شک و تردیدی نماند که راه نجات آن‌ها، روی‌آوردن به سمت نرم‌افزارهای سورس باز و به ویژه بانک اطلاعاتی ‌MySQL است. شاید قبلاً شرح کاهش چشمگیر هزینه‌های نگهداری سیستم در سایت آمازون براثر استفاده از ‌MySQL را شنیده باشید، اما اکنون مسئله از آن هم فراتر رفته‌ است.
زیرا آن نسخه ‌‌MySQL که آمازون و چندین سایت اینترنتی را از بحران مالی دور کرد و به سوی وضعیت بهتری رساند، با نسخه کنونی ‌‌MySQL بسیار متفاوت است. شاید در آن زمان حتی بسیاری از کارشناسان بی‌طرف سیستم‌ها و بانک اطلاعاتی، ‌MySQL را به دلایل ویژگی‌های آن زمان، یعنی عدم پشتیبانی از برخی امکانات و استانداردهای یک بانک‌اطلاعاتی چند‌منظوره مثل تریگر، روال ذخیره‌شده، ویو و امثال آن، فقط برای استفاده در چند کاربرد محدود مثل انبارکردن اطلاعات یا به اصطلاح ‌Data Warehousing مناسب می‌دانستند و در برخی کاربردهای تجاری پرمصرف دیگر مثل سیستم‌های مبتنی ‌بر فرایندهای محاسباتی (‌Transaction) استفاده از آن را توصیه نمی‌کردند.
به عنوان مثال، در آن روزگار ‌‌MySQL می‌توانست برای سایت‌هایی که صرفاً نقش اطلاع‌رسانی را بازی می‌کردند و چندان درگیر پردازش‌های سنگین نبودند (مانند سایت آمازون) انتخاب مناسبی قلمداد شود، اما در کاربردهای دیگری چون سیستم‌های اطلاعاتی و مدیریت منابع انسانی سازمان‌ها و موسسات تجاری‌ (سیستم‌های ‌MIS،‌‌ERP یا ...) به عنوان راه‌حل رده چندم هم به حساب نیاید.
با این‌حال اکنون وضع به گونه دیگری است. تغییراتی که در نسخه‌های جدید ‌‌MySQL داده شده، این موتور پایگاه داده‌ای را در معرض رقابت جدیدی با بانک‌های اطلاعاتی سرشناسی چون اوراکل و ‌‌SQLServer قرار داده است.
بنابراین برای بسیاری از شرکت‌هایی که قصد اختصاص هزینه‌های کمتری برای برخورداری از یک سیستم بانک‌اطلاعاتی را دارند، ‌MySQL یک آلترناتیو ایدهآل به حساب می‌آید. غیر از هزینه‌‌های مربوط به مالکیت (TCO) که پایین بودن آن یکی از نقاط‌قوت ‌MySQL قلمداد می‌شود، عامل مهم دیگری وجود دارد که همان خدمات پشتیبانی است. این عامل که همواره از عوامل بسیار با اهمیت در حوزه‌های مختلف ‌IT است، تا چند سال قبل با علامت سوال بزرگی درباره برخی محصولات اپن سورس مثل ‌MySQL همراه بود.
نامشخص بودن متولی رسمی در قالب یک شرکت مطرح و همچنین تعدد توزیع و نسخه‌های مختلف، همواره یکی از نقاط‌ضعف برخی نرم‌افزارهای سورس باز بوده است. اما در مورد ‌MySQL و به‌ویژه در سال‌های اخیر که پس از انجمن‌هایی چون ‌MySQL AB، شرکت‌های مطرحی مثل ‌‌SAP به توسعه و پشتیبانی نسخه‌هایی از نرم‌افزارهای مبتنی ‌بر ‌‌MySQL پرداختند، اوضاع بسیار قابل اعتمادتر از گذشته شده‌است. افزایش تعداد حامیان ‌MySQL در میان شرکت‌های معتبر و شکل‌گیری اجتماعاتی برای حمایت از توسعه‌دهندگان و استفاده‌کنندگان ‌‌MySQL با نام MySQL Community و MySQL NetWork، از عوامل پایدارتر شدن موضع ‌MySQL در برابر سایر رقبا است.
● هزینه‌یابی
همان‌طور که گفته‌شد، هزینه، همواره یکی از عوامل مورد توجه در انتخاب محصولات اپن سورس و به‌ویژه ‌MySQL بوده و هست. طبق آمار موسسه ‌MySQL، هزینه خرید و نگهداری مجوز استفاده از سایر بانک‌های اطلاعاتی معتبر در سال ۲۰۰۵ بالغ بر ده میلیون دلار برای بیش از دو هزار شرکت بزرگ برآورد شده است، اما بعضی از آن‌ها توانسته‌اند با مهاجرت از سایر بانک‌های اطلاعاتی به سمت‌ ‌MySQL بین هشتاد تا نود درصد هزینه‌های مذکور را کاهش دهند.
در حالی که علاوه بر مسائل مربوط به هزینه خرید و نگهداری مجوز استفاده، نکات قابل توجه دیگری نیز در این قبیل ملاحظات مالی مطرح است. یکی از این نکات، هزینه مربوط به ارتقای سخت‌افزار یا سیستم عامل در موارد ضروری است. براین اساس، افزایش تعداد سرورها در سایر بانک‌های اطلاعاتی دارای هزینه‌های جداگانه و خاص خود است.
در‌حالی‌که این مسئله در ‌MySQL با وجود سرویس‌های پشتیبانی خاصی که برای این‌گونه موارد درنظر گرفته شده‌است، مشتریان را نسبت به افزایش تعداد سرورها نگران نمی‌کند. در سایر موارد مربوط به ارتقا نیز کماکان استفاده از ‌MySQL بسیار مقرون‌به‌صرفه جلوه می‌نماید. وجود نسخه‌های ویژه انواع سکوهای سخت‌افزاری و نرم‌افزاری چون اینتل، اپل، یونیکس، ویندوز، لینوکس، انواع معماری‌های ۶۴ بیتی و امثال آن ازجمله دلایل این امر به حساب می‌آیند.
● ‌نگاهی به ‌‌mySQL AB
اصولاً مسئله مهاجرت از یک نرم‌افزار به نرم‌افزار دیگر، پیچیده و مستلزم دقت کافی در نکات فنی و مالی است. بدون‌شک هیچ مشتری عاقلی حاضر به خرید یک محصول نرم‌افزاری که نام یک شرکت پشتیبانی‌کننده را به همراه نداشته باشد، نیست. حال هرچه این شرکت سرشناس‌تر و محصولش در بازار دارای استفاده کننده بیشتری باشد، اطمینان مشتریان بعدی نیز بالاتر می‌رود و ناخودآگاه محصول فوق را به عنوان یک انتخاب قوی برای آن‌ها درمی‌آورد.
در حال حاضر‌ MySQL NetWork از این ویژگی برخوردار است. این اتحادیه تا سال ۲۰۰۵ در بیش از ۲۲ کشور دنیا، بالغ بر هشت میلیون نسخه ‌‌MySQL AB را نصب و پشتیبانی کرده‌است و به گفته مسئولان آن، روزانه تقریباً چهل هزار نفر اقدام به دانلود تمام یا قسمتی از محصولات ‌‌MySQL AB می‌نمایند.
اما شرکت‌های بزرگی که خواستار ارائه پشتیبانی از محصولات باشند نیز می‌توانند امتیاز پشتیبانی موسوم به‌MySQL NetWork را خریداری کنند و از مزایای آن بهره‌مند شوند. هم‌اکنون شرکت‌های معتبری چون HP، ناول، دل و دیگران نیز از عاملا‌ن فروش امتیاز پشتیبانی ‌‌MySQL Network هستند و بسیاری از شرکت‌ها یا سازمان‌های بزرگ نظیر یاهو، گوگل، ناسا، سایت آمازون و ... نیز از مشتریان این امتیاز پشتیبانی به شمار می‌آیند.
به گفته دان آگرونو، مدیر فنی سایت هواشناسی ‌Weather.com (یکی از ده سایت اینترنتی بزرگ جهان)، استفاده از یک سیستم عامل لینوکس، پردازنده اینتل و بانک ‌MySQL به جای سرور سولاریسی در این سایت باعث کاهش یک سوم هزینه‌های نگهداری و افزایش سی‌درصدی کارایی و حجم پردازش شده است.
● هزینه برحسب کارایی
‌صحبت از کارایی یا سرعت پردازش ذخیره، بازیابی یا پردازش اطلاعات به میان آمد. بد نیست عامل هزینه را به همراه مسئله کارایی سیستم به‌طورهمزمان بررسی نماییم. کاملاً واضح است که هیچ کارفرمایی حاضر نیست سرعت، کارایی و ظرفیت سیستم خود را کاملاً فدای هزینه پایین نماید. بنابراین به دنبال راه‌حل میانه و بهینه‌ای می‌گردد که تا حدودی هر دو خواسته را برآورده کند. امروزه ‌MySQL با توانایی‌ها و قابلیت‌های جدیدی که در نسخه پنجم به بعد خود به همراه دارد، قادر است این مهم را به انجام برساند.
بنابراین مشتری در زمان استفاده از ‌‌MySQL نباید نگران هزینه احتمالی برای ارتقای سخت‌افزار خود یا افزایش تعداد سرورها، پردازنده‌ها، یا هاردیسک‌ها باشد. چراکه‌ MySQL می‌تواند تا حدود قابل توجهی این نیاز را جبران نماید. وجود انواع موتورهای ذخیره‌سازی ‌(‌Store Engin در ‌MySQL) که شیوه ذخیره‌سازی اطلاعات را برای کاربردهای گوناگون تعریف می‌نمایند، از جمله ابزارهای مهم در مقبول بودن سرعت سیستم به حساب میآیند. دو موتور ذخیره‌سازی مشهور به نام ‌‌InnODB برای کاربردهای OLTP و موتور ISAM برای کاربردهای OLAp به علاوه چندین موتور ذخیره‌سازی دیگر برای سایر کاربردها دستیابی به این هدف را آسان‌تر نموده‌اند. ابزارهای دیگری چون سیستم ایندکس‌گذاری روی متون ‌(Text Indexing)، سیستم تنظیم‌کننده و پیکربندی حافظه‌ ‌Cache مورداستفاده موتور MySQL، و برنامه‌های بهینه‌ساز کارایی سیستم ‌(‌Optimizer) نیز از جمله ابزارهای موجود در این بانک اطلاعاتی هستند.
حتی بسیاری از کارشناسان بر این باورند که در هنگام الزام به استفاده از تعداد سرورهای بیشتر نیز ‌‌MySQL دارای مزیت بزرگ است؛ زیرا هم از افزایش تعداد سرورهای بانک اطلاعات در هر دو شکل آن یعنی هم به صورت اشتراک داده و هم به صورت خوشه‌بندی به خوبی پشتیبانی می‌کند و هم خرید مجوز آن برای افزایش و استفاده روی سرورهای جدید بسیار مقرون به صرفه‌تر از سایر بانک‌های اطلاعاتی موجود چون اوراکل یا ‌SQLServer است. جدول ۱ نسبت هزینه به کارایی‌‌(علا‌مت $‌US به معنای واحد هزینه به دلار و ‌TOPS یعنی تعداد عملیات قابل اجرا در واحد ثانیه است) را برای چند پایگاه داده مختلف نشان می‌دهد. در این جدول عدد کمتر نشان‌دهنده هزینه کمتر و کارایی بیشتر است.

------------------------------------------------------------------
دبیرخانه شورای عالی فناوری اطلاعات کشور


پاسخ بصورت نقل قول
ارسال ابزارهای ویژه در MYSQL 
داشتن ابزارها و واسط‌های کاربری گرافیکی همواره از نقاط قوت یک پلتفرم، سیستم‌عامل یا برنامه نرم‌افزاری محسوب می‌شود. هرچند روح یا لایه متفکر یک نرم‌افزار را هسته یا موتور اجرایی درون آن تشکیل می‌دهد، بدون داشتن یک رابط‌گرافیکی کاربرپسند که نقش کالبد و پیکر آن را بازی می‌کند، مانند موجودی نامرئی است که بسیاری از ویژگی‌ها و توانایی‌هایش از دید دیگران پنهان می‌ماند.
از این‌رو بسیاری از نرم‌افزارهایی که به‌ صورت سنتی براساس دستورات خط فرمان، سرویس‌های خود را در اختیار کاربران قرار می‌دادند تلاش نمودند ضمن حفظ یکپارچگی و توانایی‌ها و ویژگی‌های سابق خود، ابزارهای جدیدی را برای برقراری یا تکمیل هرچه بهتر رابطه خود با کاربران و به‌خصوص متخصصان و برنامه‌نویسان سیستم عامل‌های گرافیکی ارائه نمایند.
بانک‌های اطلاعاتی نیز به دلیل ماهیت خود که سطح گسترده‌ای از سرویس‌های مختلف را دربرمی‌گیرند، نه تنها از این قاعده مستثنی نبوده‌اند، بلکه در برخی موارد نیز چاره‌ای جز پیوستن به این روند نیافته‌اند. شاید بتوان اقبال برخی برنامه‌نویسان و توسعه‌‌دهندگان به نسخه‌های اولیه برخی بانک‌های اطلاعاتی نوپا، چون SQLServer مایکروسافت، را نمونه بارزی از تمایل متخصصان به استفاده از بانک‌های اطلاعاتیِ دارای واسط کاربر گرافیکی دانست. در حالی که نقص همین ویژگی در برخی بانک‌های اطلاعاتی قدرتمند و پیش‌کسوتی چون اینفورمیکس، باعث افول و پایان یکه‌تازیشان در عرصه نگهداری و پردازش اطلاعات شد.
از این رو بانک‌اطلاعاتی MySQL که قاعدتاً با توجه به پیشرفت‌های روز به‌روز و شگفت‌انگیز محیط‌های گرافیکی همزاد خود یعنی لینوکس، راهی جز پیوستن به خط‌مشی مذکور را نمی‌دید، از نسخه ۴ و به خصوص نسخه ۵ شاهد دگرگونی بسیار شگرفی در ارائه ابزارهای گرافیکی مدیریت، توسعه و عیب‌یابی بانک‌های اطلاعاتی شد. این ابزارهای گرافیکی همچون خود هسته MySQL به‌صورت منبع‌باز و در دو قالب برنامه قابل نصب و سورس‌کد قابل کامپایل از سایت mysql.com به‌صورت رایگان برای انواع سکوها چون ویندوز، لینوکس و مکینتاش قابل دسترس هستند.
● مدیریت سیستم و MySQL Administrator
از این برنامه برای انجام‌دادن عملیات مدیریتی و پیکربندی MySQL استفاده می‌شود. ویرایش کنونی این ابزار مدیریتی دارای یازده قسمت مختلف است که هرکدام وظیفه خاصی را به عهده دارند که برخی از آن‌ها عبارتند از:
▪ ‌‌Server Information
در این قسمت مشخصات سرور ارائه ‌دهنده سرویس‌های MySQL مثل نام کامپیوتر، آدرسIP، سیستم عامل، پردازنده و امثال آن برای مدیر سیستم نمایش داده می‌شود.
▪ ‌Server Control
در این پنجره امکان شروع یا توقف سرویس MySQL و کنترل آن وجود دارد. در واقع این قسمت همان کاری را انجام می‌دهد که مرکز کنترل سرویس در سیستم عامل به عهده دارد.
▪ ‌Startup Parameters
شاید مهم‌ترین و به بیانی، مدیریتی‌ترین بخش ابزار مذکور، قسمت مربوط به تنظیم پارامترهای پیکربندی موتورMySQL است. برای کار با این پنجره تسلط به مفاهیم پایگاه‌های داده‌ای و همچنین واژه‌ها و تکنیک‌های مدیریتیMySQL بسیار ضروری است. در واقع این زیر برنامه از تنظیمات شبکه‌ای چون پورت TCP/IP گرفته تا تنظیمات امنیتی موتور MySQL را انجام می‌دهد. به‌علا‌وه، تمام پارامترها و تنظیمات مربوط به دو موتور ذخیره‌سازی مشهور یعنی MyISAM و InnoDB به‌خصوص تنظیمات مربوط به بافرهای آن‌ها نیز دراین جا تعریف می‌شوند.
در قسمت‌های دیگر این پانل نیز پارامترهای دیگری چون میزان حافظه نهفته قابل تخصیص به عملیات جست‌وجو، یعنی همان Query Cache یا برخی تنظیمات مربوط به عملیات Replication که مستلزم تخصص کافی مدیر سیستم در زمینه‌های مربوطه است در اختیار وی قرار داده می‌شود.
▪ ‌User Administration
تعریف نام کاربر، رمز عبور و سایر مشخصات آن، به علاوه تعریف سطوح دسترسی وی به کلیه موجودیت‌های درون یک بانک اطلاعاتی و سایر تنظیمات کاربر، در این قسمت انجام می‌شود.
▪ ‌Server Connentions
در این پانل، اطلاعاتی درمورد کاربران در حال اتصال و کار با بانک‌های اطلاعاتی مثل نام کاربر، کامپیوتر در حال استفاده، بانک اطلاعاتی مورد استفاده، نوع کار در حال انجام و ... نمایش داده شده و امکان توقف پردازش‌های در حال انجام توسط کاربر به وسیله مکانیسم Kill Process برای مدیر بانک اطلاعاتی فراهم گشته است.
▪ ‌Health
نمایی از وضعیت فعلی سیستم مثل میزان استفاده از پردازنده، حافظه، ترافیک داده‌ای در شبکه و خلاصه‌ای از وضعیت فعلی پارامترهای اولیه‌ای که در قسمت Startup Variables توسط مدیر سیستم تنظیم شده بود و سایر موارد مربوط به کارایی و موقعیت پردازشی سرور در این قسمت قابل مشاهده است.
▪ سایر قسمت‌ها
قسمت‌های دیگر ابزار مدیریت سیستم، شامل برنامه‌هایی برای کنترل لاگ‌ها، کنترل وضعیت عملیات Replication در حال اجرا و دو برنامه جهت عملیات پشتیبان‌گیری و بازاریابی اطلاعات است. در این زمینه نسخه پنجم MySQL دارای تغییرات بسیار مهم برای پشتیبانی کامل از عملیات مذکور است. در این نسخه امکان انجام‌دادن چهار نوع پشتیبان‌گیری از یک بانک‌اطلاعاتی وجود دارد. ضمن این‌که هرکدام از این چهار نوع نیز به نوبه خود تنظیمات بسیار متعددی دارند که می‌توانند به مقاصد پشتیبان‌گیری متعددی پاسخگو باشند.
حتی این عملیات برای آن‌که بتواند دقیقاً مدیر سیستم را در پشتیبان‌گیری اجزای موردنیاز و حیاتی یک بانک اطلاعاتی یاری دهد، عملیات مذکور را تا حد تک‌‌تک اشیای موجود در بانک مثل یکایک جداول، دیدها، روال‌ها و سایر موجودیت‌ها قابل انجام نموده است؛ ضمن این‌که عملیات بازیابی (Restore) اطلاعات از فایل‌های پشتیبان نیز به همین صورت قابل انتخاب توسط مدیر سیستم است.
● مدیریت بانک اطلاعاتی و Query Browser
Query Browser عنوان یک ابزار گرافیکی توانمند برای کار با موجودیت‌های درون یک بانک اطلاعاتی است. در واقع با این ابزار می‌توان یک بانک‌اطلاعاتی یا همان به اصطلاح Schema را ساخت و موجودیت‌های درون آن اعم از جداول، دیدها، روال‌ها و توابع را تعریف کرد. در سمت راست پانل این ابزار پنجره‌ای به نام Schemata وجود دارد که محل تعریف و مشاهده بانک‌های اطلاعاتی و موجودیت‌های درون آن‌هاست. در این پنجره کاربر قادر خواهد بود با یک راست‌کلیک‌ ساده و انتخاب New Schema پایگاه داده جدید خود را تعریف کند و سپس به همین روش به تعریف ساختار درونی آن بپردازد.
برای این کار کافی است با راستکلیک روی نام بانک ایجاد شده، گزینه ‌New Table را انتخاب کنید. پس از آن پنجره‌ای نمایش داده می‌شود که تمام امکانات ساده و پیشرفته‌ برای تعریف یک جدول (ستون‌ها) در آن مشاهده می‌شود. این پنجره درعین سادگی، امکان تعریف فیلدهای یک جدول را به آسانی فراهم می‌کند.
به‌علا‌وه، بخش‌هایی برای انجام‌دادن امور پیشرفته‌ای چون ایندکس‌گذاری روی جدول و انتخاب ایندکس (از بین سه نوع Btree ،Hash ،(Rtree یا حتی انتخاب نوع موتور ذخیره‌سازی مورد استفاده برای کار با داده‌های این جدول در حال ساخت (از بین هفت موتور ذخیره‌سازی مشهور چون ISAM ،InnoDB ،MyISAM ،Memory ،Merge ،NDB ،BDB) و سایر تکنیک‌های پیشرفته را نیز دارد.
در سمت چپ این ابزار نیز محل نوشتن دستورات SQL برای کار با داده‌های موجود در جداول بانک اطلاعاتی یا درهنگام ساخت سایر موجودیت‌ها مثل دیدها، روال‌ها و توابع مشاهده می‌شود.
● مهاجرت و Migration ToolKit
با این همه، مهم‌ترین واژه دنیای پلتفرم‌های نرم‌افزاری که اتفاقا ًMySQL سرمایه‌گذاری و سروصدای زیادی روی آن به راه انداخته، مسئله مهاجرت است.
با ابزار Migration Toolkit، یک توسعه‌‌دهنده یا مدیر سیستم می‌تواند بانک اطلاعاتی موجود خود را از یک پلتفرم یا موتور پایگاه داده‌ای دیگر مثل اوراکل، اکسس یا SQLServer به MySQL انتقال دهد.
این ابزار با استفاده از فناوری جاوا و توابع موجود در محیط یا پلتفرم اجرایی جاوا (jRE) قادر است بانک‌های اطلاعاتی موجود در هر پایگاه داده‌ای را که از jDBC برای اتصال به آن پشتیبانی می‌کند، به MySQL منتقل کند.
در قدم اول مدیر سیستم، مبدا و مقصد مهاجرت یک بانک اطلاعاتی را مشخص می‌کند. آن‌گاه فهرستی از موجودیت‌های داخل بانک مبدا نمایان می‌شود و او می‌تواند جداول، دیدها و هر چیزی را که مایل به انتقال به MySQL است، انتخاب کند. با این کار، ابزار مهاجرت، اسکریپت‌های DDL برای ساخت این موجودیت‌ها در مقصد را آماده می‌کند. در قدم بعد، یک بانک اطلاعاتی در سرور MySQL (مقصد) ساخته شده و اسکریپت‌های DDL در آن‌جا اجرا می‌شوند. بدین ترتیب یک ساختار مشابه بانک اطلاعاتی مبدا، در سرور MySQL مقصد ساخته شده و درنهایت با یک عمل انتقال داده یا به اصطلاح یک کپی گروهی (Bulk Copy) کلیه داده‌های موجود در جداول به بانک اطلاعاتی مقصد کپی می‌شود.
● طراحی بانک اطلاعاتی و MySQL Workbench
میزکار MySQL عنوان برنامه‌ای جدید است که به وسیله آن می‌توان جداول و دیدهای یک بانک اطلاعاتی را طراحی کرد و روابط بین جداول را به‌صورت گرافیکی تعریف نمود.
این ابزار، پانلی را که شمایل‌های گرافیکی خاصی روی آن دیده می‌شود، در اختیار طراح بانک قرار می‌دهد تا وی با استفاده از آن‌ها (که هر کدام نماینده یک نوع موجودیت در MySQL است)، بانک موردنظر خود را طراحی نماید و پس از برقراری روابط بین آن‌ها، با یک فرمان، موجودیت‌های مذکور را یکباره در بانک اطلاعاتی موردنظر ایجاد کند.
میزکار MySQL را در واقع می‌توان هم نوعی برنامه طراحی بانک به حساب آورد و هم نوعی Query Browser گرافیکی‌تر دانست که می‌تواند عملکرد این برنامه را شفاف‌تر و آسان‌تر نماید. ضمن این‌که مستندات (Document) مناسبی را نیز برای استفاده تحلیلگران، برنامه‌نویسان و مدیران سیستم پدید آورد.
شایان ذکر است که بسیاری از فروشندگان محصولات نرم‌افزاری نیز به دلیل ماهیت اپن‌سورس بودن MySQL توانسته‌اند ابزارهای بصری ویژه خود را برای آن تهیه و ارائه نمایند. به‌عنوان مثال شرکت اروپایی SAP نسخه‌ای از یک پایگاه‌داده به نام MAXDB را براساس هسته MySQL ارائه نموده که دارای ابزارها و محیط مختص به خود است، اما بنیان اصلی آن همان موتور MySQL است. به همین دلیل می‌توان امیدوار بود که MySQL در آینده نزدیک دارای ابزارها و واسط‌های کاربر قدرتمندی در رقابت با سایر برنامه‌ها باشد.

----------------------------------------------------------------
شرکت نرم‌افزاری ایده‌تک


پاسخ بصورت نقل قول
ارسال معماریOracle 
پایگاه داده اراکل متشکل از قسمتهای مختلفی می‌باشد. بعضی از آنها ساختارهای حافظه میباشند و بعضی دیگر پردازشهایی در پشت صحنه می‌باشند که دقیقا وظایف خاصی را انجام می‌دهند و منابع به کار گرفته شده توسط هارد دیسک برای ذخیره کردن داده های یک سازمان و همچنین ابزارهایی طراحی شده برای بازیافت اطلاعات برای جلوگیری از بین رفتن آنها در اثر اشتباهات و خراب شدن دیسک میباشد. به مجموعه ساختار های حافظه و پردازشهای مربوط به انجام وظایف Oracle Instance می‌گویند. و به مجموعه این Instance و بقیه اجزاء Oracle Database میگویند.
Oracle Server Architecture
Memory Architecture
SGA : Oracle"s Primary Memory Component

در این بخش ابتدا به ساختارهای حافظه در یک Oracle Instance می‌پردازیم. به طور کلی دو ساختار اصلی از حافظه در اراکل وجود دارد. اولین قسمت و مهمترین قسمت System Global Area یا SGA میباشد . بیشتر اوقات وقتی از حافظه صحبت میشود منظور همان SGA میباشد. خود SGA تشکیل شده از قسمتهای مختلفی از جمله Buffer Cache, Shared Pool, Redo Log Buffer می‌باشد. البته اجزای دیگری در این قسمت وجود دارد که در فرصت مناسب به شرح آنها خواهیم پرداخت.
● Buffer Cache
این ساختار حافظه تشکیل شده از بافرهایی به اندازه های یکسان که به آن Database Block گفته میشود میباشد. که کار آن ذخیره داده هایی که است که توسط Sql به سمت کاربر بر میگردد. به طور کلی شما می تواننید Buffer Cache را را مجموعه ای از بافرها با سایزهای یکسان تصور کنید. به خاطر همین است که وقتی شما پارامترهای یک Database را تنظیم می‌کنید تعداد بافرها را مشخص می‌کنید نه سایز آن را به بایت. Datablock واحدی مجزا از حافظه در اراکل است که میتواند چندین سطر از یک Table را در خود جای دهد.
Buffer Cache دارای دو وظیفه اصلی می‌باشد. یکی برای افزایش کارایی اراکل برای جواب دادن به Select های تکراری از سمت کاربر و وظیفه دوم سرعت بخشیدن به تغییراتی است که کاربر در Database می‌دهد. این تغییرات ابتدا در حافظه ثبت شده و بعدا بر روی دیسک ذخیره میشود.
● Shared Pool
این ساختار تشکیل شده از سه قسمت می‌باشد که وجود دو قسمت آن لازم می‌باشد . قسمت اول Library Cache می‌باشد که محل نگهداری دستورهای تجزیه شده Sql و نگهداشتن آنها در حافظه برای استفاده مجدد میباشد و قسمت دوم Dictionary Cache می‌باشد که گاهی به آن Row Cache نیز گفته میشود و وظیفه آن نگهداری اطلاعات اخیر خوانده شده از Data Dictionary می‌باشد که به عنوان مثال شامل Usernames, Password, Previlages میباشد.
● Redo Log Buffer
این قسمت تغییرات ایجاد شده توسط DML و توسط کاربر ایجاد شده است را در خود نگهداری می‌کند. دستورهای DML شامل Update, Delete, Insert, Drop و... که توسط کاربر اجرا شده و باعث تغییرات در Database, Tables, Rows می‌شود. این تغییرات به صورت Redo Entry در حافظه نگهداری و سپس بر روی دیسک ذخیره میشوند که توسط آنها می‌توان اشتبا‌هاتی را که کاربران انجام می‌دهند و باعث از دست دادن اطلاعات می‌شود را توسط این Redo Entry ها بازیافت نمود. The PGA : The Oracle User"s Memory Area
ساختار دیگر حافظه در اراکل Program Global Area نام دارد. که کار آن نگهداشتن مقادیر متغییرهای تعریف شده توسط کاربران میباشد. اطلاعات هر کاربر نمی‌تواند Share باشد و باید فضای مخصوص به خودش را داشته باشد چون مقادیر واقعی متغییرهای درخواست شده توسط کاربر در این قسمت یافت میشود. Reading Data From Disk
● پردازش سرور
همیشه در اراکل چندین پردازش بطور همزمان با یکدیگر در حال اجرا شدن می‌باشند که شامل Background, Server, And Network Process می‌باشند که مهمترین آنها از نظر تاثیر گذار بودن بر کار کاربر server process می‌باشد که که اطلاعات در خواستی یک کاربر را از روی دیسک خوانده و آن را به Buffer Cache منتقل می‌کند. به طور کلی دو راه برای مدیران اراکل برای پیاده سازی Server Process وجود دارد. Shared Server And Dedicated Server
● Dedicated Server
در این روش برای هر کاربری که به اراکل متصل می‌شود.یک اداره کننده Handler برای پردازشهای کاربر در نظر گرفته می‌شود که اصطلاحا به آن Genie Handler می‌گویند و به ازای هر کاربر که به اراکل متصل می‌شود یک Handler نیز ایجاد می‌شود که مسئولیت خواندن داده‌های درخواست شده از طرف کاربر و منتقل کردن آنها بر روی Buffer Cache را دارند و هر کاربر Handler مخصوص خودش را خواهد داشت. همچنین در این روش نیاز بیشتری به حافظه و استفاده از پردازشگر می‌باشد. اگر منابع سخت افزاری به اندازه کافی موجود باشد این روش انتخاب بسیاری از مدیران شبکه می‌باشد.
● Shared Server
در این روش بر خلاف روش قبل تعداد کمی Server Process در اراکل در حا اجرا شدن می‌باشند که به درخواستهای کاربران پاسخ می‌دهند. در این روش چندین کاربر با یک Server process اداره می‌شوند. و ارکل این عمل را با استفاده از یک Network Process به نام Dispatcher انجام می‌دهد. در خواست هر کاربر به یک Dispatcher اتصال می‌یابد و توسط آن به درخواستهای کاربران جواب داده می‌شود. Dispatcher تمام درخواستها را در یک صف قرار داده و به آنها جواب می‌دهد. این مساله به معنی صرفا یک Dispatcher در کل اراکل نمی‌باشد.
در این روش نیز شما قادر خواهید بود که Server Process And Dispatcher های متعددی را ایجاد نمایید. در این روش مصرف سخت افزاری کمتری نسبت به روش قبل لازم ‌می‌باشد. در Dedicated Server برای هر کاربر که به پایگاه متصل می‌شود زمانی برای ایجاد یک ‌Server Process لازم می‌باشد در حالی که در Shared Server، کاربران با استفاده از سرویس گرفتن از طریق یک Dispatcher موجود و یک Server Process در زمان صرفه جویی می‌کنند. به همین دلیل در پایگاه‌هایی که تعداد متعددی از کاربران به آن متصل می‌شوند استفاده از این روش بهتر می‌باشد.
● User session Information
user session برای یک کاربر در اراکل در Shared pool ذخیره میشود اگر DBA اراکل را در حالت Shared Server تنظیم کرده باشد. در حالتی که اراکل در حالت Dedicated Server می‌باشد، User Session در PGA نگهداری می‌شود.
● Structures That Connect Users to Oracle Servers
اولین مرحله ای که درخواست کاربر به آن می‌رسد Oracle Listener می‌باشد که بر روی پورت خاصی به درخواستهای کاربران گوش می‌کند. وقتی که درخواست کاربر به اراکل Listener رسید، امکان انجام شدن دو عمل وجود دارد. اگر اراکل از Dedicated server استفاده می‌کند، Listener به اراکل دستور ایجاد یک Dedicated Server را میدهد و سپس درخواست کاربر را به آن واگذار می‌کند. اگر Multi Thread Server مورد استفاده اراکل باشد، Listener درخواست کاربر را به به یک پردازشگر که همان Dispatcher Process می‌باشد واگذار می‌کند. بعد از انجام هر کدام از اعمالی که ذکر کردم، Listener دیگر نقشی نخواهد داشت و آماده قبول کردن درخواست بعدی از کاربر می‌باشد.
وقتی که درخواست کاربر به اراکل میرسد اگر اراکل در حالت MTS باشد، وقتی که کاربر درخواستی را انجام میدهد، Dispatcher درخواست کاربر را در یک صف به نام Request Queue یا همان صف درخواست کاربران قرار می‌دهد. Request Queue در System Global Area قرار دارد که درخواستها را به ترتیب جواب می‌دهند و برای اینکار از الگوریتم معروف First-In-First-Out استفاده می‌کند.
هر Dispatcher در SGA صف مربوط به خود رادارد و به درخواستهای صف مربوط به خودش پاسخ میگوید وجواب پاسخها نیز در بازگشت به کاربر مربوطه بر میگردد.
● Stages in Processing Queries, Commits and Changes
زمانی که شما درخواست یک سری داده‌های مشخص از اراکل را توسط یک Sql Select انجام می‌دهید، دستورات به گونه‌ای است که شما درخواست اطلاعات دلخواه خود را صاذر می‌کنید. خروجی این دستورات باید یرای اراکل قابل فهم باشد. این کار توسط Relational Database Management System که همان RDBMS می‌باشد انجام می‌شود. RDBMS دستورات SQL شما را به گونه‌ای برای اراکل که قابل فهم باشد ترجمه می‌کند. مراحل پردازش به صورت زیر می‌باشد:
▪ Search Shared Pool
RDBMS ابتدا سعی می‌کند که یک کپی از SQL ترجمه شده را در Library Cache پیدا کند.
▪ Validate Statement
RDBMS، درستی دستورات SQL را که توسط کاربر اجرا شده است را چک می‌کند.

------------------------------------------------------
شرکت نرم‌افزاری ایده‌تک


پاسخ بصورت نقل قول
ارسال ادامه معماری Oracle 
Validate Data Source
RDBMS مطمئن می‌شود که تمام سطرها و ستون‌های که کاربر دز دستورش به آنها اشاره کرده است وجود داشته باشد.
▪ Acquire Locks
RDBMS در این مرحله object های استفاده شده توسط دستور کاربر را تا پایان اجرای آن قفل می‌کند.
▪ Check Privileges
RDBMS مجوز کاربر را برای اجرای دستورات SQL را کنترل میکند.
▪ Pars Statement
RDBMS با تشکیل یک Parse Tree برای دستور SQL آن را در Library Cache قرار می‌دهد که شرکت اراکل بر این عقیده است که این روش بهینه برای اجرای دستورات اراکل می‌باشد. اینها مراحلی هستند که RDBMS آنها را انجام می‌دهد تا به داده‌های مورد نظر کار بر برسد. اگر دستورات در Library Cache وجود داشت این مراحل قابل حذف می‌باشد.
▪ Execute Statement
RDBMS تمام پردازشهای لازم را برای اجرای Select Statement را انجام می‌دهد، در این لحظه Server Process داده‌های مورد نظر را از روی دیسک به Buffer Cache منتقل می‌کند.
▪ Fetch Values From Cursor
زمانی که اجرای select statement پایان یافت داده‌ها در یک Cursor ذخیره شده و به Variable های مورد نظر الصاق میشوند و به User Process باز می‌گردند.
▪ Stages In Processing DML Statement
یکی دیگر از پردازشهای اراکل Undo Segment می‌باشد که کار آن ذخیره کردن ورژن‌های قدیمی داده‌هایی می‌باشد که توسط دستورات DML که توسط کاربر اجرا شده است را انجام می‌دهد. این دستورات دستوراتی از قبیل Update, Insert، Delete می‌باشد.
● پردازش دستورات DML به شرح زیر می‌باشد:
▪ Parse Statements
RDBMS با تشکیل یک Parse Tree برای دستورات و قرار دادن آنها در Library Cache مراحل اجرای آنها را فراهم می‌کند. اگر Parse Tree در Library Cache وجود داشته باشد. این مرحله اجرا نمی‌شود.
▪ Execute Statement
RDBMS تمام پردازشها را برای اجرای دستورات DML انجام می‌دهد. برای آنجام Update و یا Delete پردازشگر سرور یا همان Server Process داده‌ها را از روی دیسک به Buffer Cache منتقل می‌کند و داده‌های منتقل شده را تا پس از پایان تغییرات Lock می‌کند. که این عمل باعث می‌شود تا دیگر کاربران نتوانند روی این داده‌ها تغییرات ایجاد کنند. برای انجام Insert این بار Server Process یک Block خالی را از روی دیسک انتخاب کرده و اطلاعات جدید را بر روی آن قرار می‌دهد. در کنار انجام شدن این پردازش، پردازش Undo Segment نیز انجام ‌می‌شود که اطلاعات قدیمی و جدید را ذخیره می‌کند.
▪ Generate Redo Information
با توجه به مطالبی که قبلا با هم مرور کردیم، Redo Log Buffer تغییراتی را که روی داده‌ها انجام می‌شود را ذخیره می‌کند. بعد از انجام و تغییرات روی داده‌ها که ‌توسط DML انجام گرفته است حالا نوبت User Process می‌باشد که یک Redo Entry را در داخل Redo Log Buffer بنویسد. بدین ترتیب اراکل می‌تواند در مواقعی که داده‌ها از بین می‌روند و یا اینکه خراب می‌شوند، آنها را بازیابی کند. این Redo Entry ها بعدا بر روی دیسک ذخیره می‌شوند.
▪ Moving Data Changes From Memory To Disk
بعد از تغییرات داده‌ها و پایان اجرای دستورات، داده‌های تغییر داده شده در Buffer Cache باید به روی دیسک انتقال داده شوند. به بافرهای تغییر کرده درون بافر اصطلاحا Dirty می‌گویند. همچنین اطلاعات در مورد تغییراتی که بر روی داده‌ها انجام شده است نیز در Redo Log Buffer وجود دارد. با ساختن تمام این تغییرات در حافظه اراکل قادر خواهد بود تا با سرعت بیشتری به DML Statement ها جواب دهد. به دلیل اینکه پیاده سازی و تغییرات بر روی حافظه سریع تر از ایجاد تغییرات بر روی دیسک می‌باشد.
و دلیل دیگر این است که کاربر دیگر نیازی ندارد تا منتظر انتقال داده‌های ذخیره شده بر روی دیسک باشد. اراکل با اجرای دو پردازش در پشت صحنه تمام وظائف بالا را انجام می‌دهد.این دو پردازش DBW۰, LGWR نام دارند که کار انتقال داده‌ها از روی Buffer Cache و Redo Log Buffer را بر روی دیسک انجام می‌دهد. این پردازشها Asynchronous هستند بدین معنی که این پردازشها گاهی بعد از این که کاربران تغییرات را انجام می‌دهند بر روی دیسک نوشته می‌شود.
▪ Role of DBW
Data Base Writer Process نامیده می‌شود که وظیفه آن انتقال Dirty Data Block ها از روی بافر به روی دیسک می‌باشد. این پردازش در ورژنهای قبلی اراکل DBWR نامیده می‌شد که در ورژنهای جدید به علت وجود چندین Database Writer Process دیگر به کار برده نمیشود.
این پردازش به یکی از دلائل زیر انجام می‌شود:
۱) وقتی که Server Process به فضای بیشتری در Buffer Cache برای خواندن اطلاعات بیشتری احتیاج دارد.
۲) وقتی که LGWR به DBW۰ دستور نوشتن بدهد.
۳) هر سه ثانیه و زمانی که تعداد Dirty Buffer ها به مقدار بحرانی برسد.
ـ نکته: مساله‌ای که LGWR به DBW۰ دستور نوشتن می‌دهد، Check Point می‌باشد. عدد صفر در DBW۰میتواند بین ۰ تا ۹ تغییر کند. پس اراکل می‌تواند تا ۱۰ پردازش از DBW۰ را داشته باشد.
▪ Role of LGWR
Log Writer Process نامیده می‌شود که Redo Entry ها را از Redo Log Buffer در حافظه بر روی دیسک منتقل کند.
این پردازش به یکی از دلائل زیر انجام می‌شود:
۱) وقتی که یک تراکنش به طور کامل انجام شود.
۲) وقتی که یک سوم از Redo Log Buffer پر شده باشد.
۳) قبل از اینک DBW۰ داده‌ها را از روی حافظه بر روی دیسک بنویسد.
▪ Stages In Commit Process
با استفاده از دستور Commit تمام تغییراتی که توسط کاربر بر روی داده‌ها در سطح User Process انجام شده است حالت پایدار پیدا می‌کنند. با استفاده از rollback تغییرات روی داده‌ها منسوخ می‌شوند وUndo Segment روشی است که اراکل با نگهداری یک کپی از داده‌های قدیمی و نگهداری آنها در Undo Segment، اراکل می‌تواند تغییرات را فسخ کند. این کار تا زمانی قابل انجام می‌باشد که Commit انجام نشده باشد.
ـ نکته: استفاده از Commit دلالت بر نوشته شدن تغییرات ایجاد شده توسط کاربر بر روی دیسک ندارد. فقط در زمانهایی که در بالا گفته شد DBW۰ داده‌ها را بر روی دیسک می‌نویسد.در زمان Commit کارهای زیر انجام می‌پذیرد:
۱) آزاد کردن تمام سطرهایی که قفل شده‌اند. بعد از آزاد شدن آنها کاربران دیگر میتوانند در آن تغییرات ایجاد کنند.
۲) آزاد کردن Undo Segment که توسط User Transaction قفل شده است.
۳) ایجاد یک Redo Entry توسط User Process در زمانی که Commit انجام می‌شود.
▪ Sys,System And Data Dictionary
sys, system دو کاربری هستند که اراکل در زمان ایجاد پایگاه داده آنها را ایجاد می‌کند. این دو کاربر قابلیت مدیریت پایگاه داده اراکل را دارند. کاربر SYS مهمتر می‌باشد زیرا مالکیت system table های اراکل را که دیکشنری داده‌ها نیز از آنجا مشتق می‌شود را نیز داراست.
Oracle Data Dictionary نیز یکی از منابع سیستم میباشد که به منظور کسب اطلاع از هر چیزی در پایگاه شما به کار می‌رود. در بحث View از اراکل دو عنوان پایه‌ای وجود دارد.یک دسته انهایی هستند که اطلاعاتی راجع به Object های پایگاه داده به شما می‌دهند که به آنها Data Dictionary Views گفته میشود و یک سری از آنها اطلاعاتی را راجع به کارایی کل سیستم به شما بر م‌گردانند که به آنها Dynamic Performance Views گفته می‌شود .References : Oracle Database Fundamentals

------------------------------------------------------
شرکت نرم‌افزاری ایده‌ت


پاسخ بصورت نقل قول
ارسال 10 که یک Dba هرگز نباید انجام دهد 
بر عهده داشتن وظيفه راهبري پايگاه داده، حتي در محیط های برنامه نویسی، همیشه خطیر بوده و از اهمیت بسیار بالایی برخوردار است، به طوری که حتی اشتباهاتی کوچک از جانب یک DBA می تواند موجب بروز اشکالاتی در عملکرد کلی سیستم ها گردد. اگر قصد دارید به عنوان یک DBA مشغول به کار شوید، پس در نظر گرفتن موارد زیر در سمت کاری آینده شما بسیار تاثیر گذار است. در صورتی هم که در حال حاضر در این سمت مشغول به کار می باشید، باز هم این امکان وجود دارد که تا به حال به بعضی از موارد زیر توجه نکرده باشید.

با تجربیاتی که در مدت هفت سال کار با SQL Server کسب کرده ام، ده موردی که در این مقاله ذکر می کنم ، کارهایی هستند که احساس می کنم یک راهبر پایگاه داده (DBA ) نباید هرگز انجام دهد.

بر عهده داشتن وظیفه راهبری پایگاه داده، حتی در محیط های برنامه نویسی، همیشه خطیر بوده و از اهمیت بسیار بالایی برخوردار است، به طوری که حتی اشتباهاتی کوچک از جانب یک DBA می تواند موجب بروز اشکالاتی در عملکرد کلی سیستم ها گردد. اگر قصد دارید به عنوان یک DBA مشغول به کار شوید، پس در نظر گرفتن موارد زیر در سمت کاری آینده شما بسیار تاثیر گذار است. در صورتی هم که در حال حاضر در این سمت مشغول به کار می باشید، باز هم این امکان وجود دارد که تا به حال به بعضی از موارد زیر توجه نکرده باشید:

1. Rebuild کردن Index در ساعات کاری
این عمل موجب افزایش چشم گیر I/O دیسک می شود. بهتر است این عمل بعدازظهر یا در طول شب ( زمانی که فعالیت کاربران به حداقل می رسد ) انجام شود.لازم به ذکر است که می توانید از سرویس Agent job جهت برنامه ریزی انجام خودکار این عملیات استفاده کنید.

2. Stop کردن Database بدون اطلاع رسانی قبلی
چرا؟!... تعداد زیادی کاربر که نمی توانند با برنامه خود کار کنند ... تلفن شما هم تا زمان راه اندازی مجدد Database از زنگ زدن دست بر نمی دارد.

3. نصب Service Pack در ساعات کاری
نصب سرویس پک، موجب Stop و Start های متعدد پایگاه داده می شود. توصیه می کنم این کار را نیز در ساعات کاری شرکت یا سازمان خود انجام ندهید. چون با این کار کاربران بسیاری را دلخور می کنید.

4. اجرای Query های تستی بر روی سرور اصلی
اگر این کار را انجام می دهید پس حتما نمی دانید که این Query ها به چه میزان منابع Server را به خود اختصاص می دهند.

5. Defragment کردن درایوهایی که فایل های دیتابیس روی آن قرار دارند
آیا تا به حال این کار را روی کامپیوتر شخصی خود انجام داده اید؟! پس حتما متوجه اید که چرا نباید این کار را روی سرور شرکت یا سازمان خود در ساعات کاری انجام دهید!!

6. بداخلاقی با برنامه نویسان
سعی کنید منطق دستورات خود را به آن ها توضیح دهید. بهتر است همیشه صبور باشید و تلاش کنید در حین ارجاع کار به آن ها دانش خود را نیز به آن ها منتقل کنید. نتیجه کار مستقیما به کار گروهی شما بستگی دارد.

7. پشتیبان گیری در ساعات کاری
این موضوع هم به I/O دیسک سرور مربوط می شود. اگر مجبور هستید این کار را در طول روز و در ساعات کاری انجام دهید، پس به گزینه هایی مانند differential Backups یا Transactional log Backups توجه کنید، این نوع پشتیبان گیری ها بسیار سریعتر صورت می پذیرد.

8. نصب Update های نرم افزاری قبل از تست و پشتیبان گیری
ممکن است نرم افزار های جانبی بر روی سرور پایگاه داده شما نصب شده باشد. نصب نرم افزار و یا نصب Update های نرم افزاری حتما باید با توجه ویژه و تست قبلی صورت پذیرد. تولید کنندگان نرم افزار ممکن است نتوانند صحت عمکرد نرم افزار خود را بر روی سخت افزار و شرایط مختلف بررسی کنند. قبل از اعمال هر تغییری در نرم افزارهای سرور از دیتابیس خود Backup بگیرید.

9. ایمن نکردن SQL Server
غالبا DBA ها فکر می کنند که سرورهایشان از امنیت بالایی برخوردار است!! آیا شما هم این طور فکر می کنید؟!
بهتر است برنامه Microsoft Baseline Security Analyzer را بر روی سرور خود اجرا کنید. شاید از مشاهده نتیجه آن تعجب کنید.

10. اجرای دستور Drop قبل از اطمینان کامل
قبل از اینکه دکمه Enter را فشار دهید خوب فکر کنید، اجرای این دستور با سهل انگاری ممکن است موجب اخراج بلادرنگ شما شود!

-----------------------------------------------------
سايت SQLIran (شرکت دانا پرداز قشم)


پاسخ بصورت نقل قول
ارسال SQL Server و تکنيک هايي براي افزایش بازده بانک اطلاعاتی 
استفاده از راهکارهايي چون افزایش تعداد سرورها یا ارتقای سرورهای موجود در پردازنده قدرتمندتر، حافظه بیشتر، هارددیسک های سریع تر و حتی ارتقای ارتباطات شبکه ای یا امثال آن از جمله ترفند هایی هستند که برای رفع معضل سرعت، مورداستفاده قرار می گیرند. در این مقاله به یکی از روش های توسعه طولی، نگاهی می افکنیم.

ممکن است پس از طی چند سال و درج هزاران رکورد در جداول یک بانک اطلاعاتی، سرعت جستجو در میان اطلاعات درج شده،سرعت درج اطلاعات جدید یا تغییر و حذف آن ها کند شود و مدیران یا برنامه نویسان این بانک ها را به ایجاد دگرگونی در برخی قسمت های بانک ناچار نماید.دو روش معمول برای مواجهه با چنین پدیده ای وجود دارد: روش اول یعنی توسعه عرضی ( Scale up ) که ترجیحا باید مقدم بر روش دوم مورد استفاده قرار گیرد، با استفاده از ساز وکار هایی مثل ایجاد انواع ایندکس ها بر روی جداول یا دید ( view )های بانک، کوتاه نمودن و کم حجم تر کردن تریگرها، به حداقل رساندن تعداد دستورات SQL که در هر فرایند وجود دارد، پرهیز از استفاده بی موقع و مکرر از توابع تعریف شده توسط کاربر و غیره می توان تا حدودی مشکل را برطرف نمود. اما در برخی موارد با تمام این تمهیدات باز هم اشکالات و وقفه هایی در سرعت و عملکرد سیستم، مدیران بانک های اطلاعاتی را ناگزیر می کند برای حل مشکل به روش دوم یعنی توسعه طولی ( Scale out ) رو بیاورند.

در این روش، استفاده از راهکارهایی چون افزایش تعداد سرورها یا ارتقای سرورهای موجود در پردازنده قدرتمندتر، حافظه بیشتر، هارددیسک های سریع تر و حتی ارتقای ارتباطات شبکه ای یا امثال آن از جمله ترفند هایی هستند که برای رفع معضل سرعت، مورداستفاده قرار می گیرند. در این مقاله به یکی از روش های توسعه طولی، نگاهی می افکنیم.

صورت مسئله

فرض کنید شما دارای یک بانک اطلاعاتی در حال کار، روی یک سرور هستید و در طول روز حدود پانصد کاربر به طور متناوب مشغول کار با این بانک هستند. کاملا آشکار است که هر چه سعی کنید با استفاده از سازوکارهای توسعه عرضی ( مثل ایندکس گذاری و امثال آن )، سرعت و کارایی سیستم را افزایش دهید، باز هم برای ارائه گزارش های مطلوب و استاندارد و حتی برای ایجاد یک محیط کارا و کاربرپسند برای استفاده از آن، مجبور می شوید برای اتفاقاتی که ممکن است در اثر ترافیک سنگین عملیات کاربران اتفاق بیفتد، فکر دیگری بکنید. یعنی حتی اگر سرور شما یک کامپیوتر قدرتمند با دو پردازنده Xeon، چهار گیگابایت حافظه و یک هارددیسک سریع باشد، باز هم قطعا در پاره ای از اوقات تصادم انبوه درخواست های موردنیاز کاربران در یک زمان، باعث بروز مسائلی چون قفل شدن برخی رکوردهای بانک (locking ) یا مسدود شدن برخی درخواست ها به دلیل عدم وجود زمان کافی برای پردازش آن ( Timeout Blocking ) می شود.
انتخاب راه حل

راه حل مسئله با استفاده از روش توسعه طولی، افزودن به تعداد سرورهایی است که به شکلی نقش پردازشگر اطلاعات را بازی می کنند. در این روش، سه راه حل مختلف وجود دارد که با اتکا به آن ها می توان تعداد سرورها، سرورهای لایه واسط (Application Server ) و سرورهای بانک اطلاعاتی (Database Server ) را افزایش داد. با این کار ترافیک و سنگینی پردازش فقط روی سرور لایه واسط یا سرور بانک اطلاعاتی کاهش می یابد و به نحوی پدیده توازن بار (Load Balancing ) چند سرور صورت می گیرد. در ادامه به بررسی هر سه راه حل مذکور می پردازیم.

راه حل یکم: کپی برداری (Cloning )

در این راه حل به سادگی می توان به جای استفاده از یک سرور لایه واسط که نقش پردازش اطلاعات را بازی می کند، از چندین سرور برای انجام دادن عمل مذکور استفاده نمود. سرورهای لایه واسط عمدتا محل فعالیت کامپوننت ها ( COM) یا وب سرورها هستند. بنابراین اگر بتوان تعداد آن ها را افزایش داد و هر دسته از کاربران را به سمت یکی از این سرورها هدایت نمود، عملکرد پردازشی سرورهای لایه واسط افزایش می یابد و در نتیجه تا حدود زیادی از بروز سرعت در سیستم جلوگیری می شود. ضمن این که اگر هر کدام از این سرورها نیز با مشکل روبه رو شوند، می توان به صورت موقت کاربران آن را به سمت یک سرور دیگر هدایت کرد و از ایجاد وقفه در کار آن ها جلوگیری نمود. ( شکل 1 )


راه حل دوم: تقسیم بندی(Partitioning )

این راه حل به دو روش تقسیم می شود:
روش یکم: افزایش سرورهای لایه واسط

در این روش نیز تعداد سرورهای لایه واسط افزایش می یابد. اما بر خلاف راه حل قبل که چند سرور کاملا مشابه، نقش یکسانی را در پردازش درخواست های کاربران ایفا می کردند، این بار هر کدام از سرورهای لایه میانی صرفا عمل خاصی را انجام می دهند که سایر سرورها از انجام دادن آن معافند. مثلا اگر قبلا تنها یک سرور، هم محل فعالیت COM ها بود و هم نقش یک وب سرور را بازی می کرد، اکنون دو وظیفه مذکور را بین دو سرور مختلف ( و شاید با ویژگی ها و توانایی های مختلف ) تقسیم می کنیم. یا به عنوان مثالی دیگر اگر تا کنون تنها یک سرور لایه میانی هم شامل COM هایی بود که با استفاده از اشیای ADO ، دسترسی به سرور پایگاه را فراهم می آوردند و هم شامل COM های دیگری که اعمال محاسباتی پیچیده را انجام می داد، اکنون می توان این دو وظیفه را بین دو سرور مختلف به ترتیب با نام هایی چون Data Access و Business Logic تقسیم کرد.
نقطه قوت این روش این است که علاوه بر تقسیم ترافیک و پردازش میان دو یا چند سرور جداگانه، امکان جد