********SQL يك t آگاه به SQL است كه مي تواند بين برنامه شما و پايگاه داده شما قرار بگيرد. اين نرم افزار بسياري از ويژگي ها ، مانند تعادل بار بين چندين سرور مجازي MySQL را ارائه ميدهد و به عنوان يك لايه حافظه پنهان براي درخواست ها عمل ميكند. در اين آموزش به ويژگي دخيره سازي ********SQL و نحوه بهينه سازي درخواست ها براي پايگاه داده MySQL شما پرداخته مي شود.
ذخيره سازي MySQL زماني اتفاق مي افتد كه نتيجه يك درخواست به گونه اي ذخيره مي شود كه هنگامي كه آن درخواست تكرار ميگردد ، بدون نياز به مرتب سازي در پايگاه داده ، نتيجه مي تواند برگردانده شود. اين ويژگي مي تواند سرعت درخواست هاي معمول را به ميزان قابل توجهي افزايش دهد. اما در بسياري از روش هاي ذخيره سازي ، توسعه دهندگان بايد كد برنامه خود را اصلاح كنند ، كه مي تواند يك اشكال را در پايگاه داده وارد كند. براي جلوگيري از اين عمل مستعد خطا ،********SQL به شما امكان مي دهد يك ذخيره سازي شفاف را انجام دهيد.
در ذخيره سازي شفاف ، فقط ادمين هاي ديتابيس بايد جهت فعال كردن حافظه پنهان براي متداول ترين درخواست ها ، پيكربندي ********SQL را تغيير دهند و اين تغييرات مي تواند از طريق رابط ادمين ********SQL انجام شود. همه كاري كه توسعه دهنده بايد انجام دهد اتصال به پروكسي آگاه به پروتكل است ، و پروكسي تصميم مي گيرد كه آيا درخواستي را مي توان از حافظه نهان بدون ضربه زدن به سرور مجازي back-end ارائه داد يا خير.
در اين آموزش از ********SQL براي تنظيم ذخيره سازي شفاف براي سرور مجازي MySQL در اوبونتو 16.04 استفاده خواهيد كرد. سپس مي توانيد عملكرد آن را با استفاده از mysqlslap با و بدون حافظه پنهان آزمايش كنيد تا تأثير حافظه پنهان و مدت زمان صرفه جويي در هنگام اجراي بسياري از سؤالات مشابه را نشان دهيد.
پيش نيازها
قبل از شروع اين راهنما به موارد زير نياز خواهيد داشت:
• يك سرور مجازي Ubuntu 16.04 با حداقل 2 گيگابايت رم ، با يك كاربر غير ريشه با امتيازات sudo و فايروال تنظيم شده است ، همانطور كه در راهنماي راه اندازي سرور مجازي اوليه Ubuntu 16.04 ما گفته شده است.
مرحله 1 – نصب و تنظيم سرور مجازي MySQL
ابتدا ، سرور مجازي MySQL را نصب كرده و پيكربندي مي كنيد تا توسط ********SQL به عنوان يك سرور مجازي back-end براي ارائه خدمات به درخواست هاي كلاينت استفاده شود.
در Ubuntu 16.04 ، سرور مجازي mysql با استفاده از اين دستور قابل نصب است:
$ sudo apt-get install mysql-server
•
Y را فشار دهيد تا نصب را تأييد كنيد.
سپس از شما رمزعبور كاربر روت MySQL خواسته مي شود. يك رمزعبور قوي وارد كنيد و آن را براي استفاده بعدي ذخيره كنيد.
اكنون كه سرور مجازي MySQL خود را آماده كرده ايد ، آن را پيكربندي مي كنيد تا ********SQL به درستي كار كند. براي نظارت بر سرور مجازي MySQL ، بايد يك كاربر مانيتور براي ********SQL اضافه كنيد ، زيرا ********SQL به جاي استفاده از اتصال TCP يا درخواست هاي HTTP GET ، به سرور مجازي پشتيبان از طريق پروتكل SQL گوش مي دهد تا مطمئن شود كه backend در حال اجرا است. مانيتور از يك اتصال SQL ساختگي (مجازي) براي تعيين اينكه سرور مجازي در حال كار است يا خير استفاده مي كند.
ابتدا وارد پوسته MySQL شويد:
$ mysql -uroot -p
-uroot با استفاده از كاربر روت MySQL شما را وارد مي كند و –p رمزعبور كاربر root را مي خواهد. اين كاربر روت با كاربر اصلي سرور مجازي شما متفاوت است و رمز عبور چيزي است كه هنگام نصب بسته mysql-server وارد كرده ايد.
رمز عبور اصلي را وارد كنيد و ENTER را فشار دهيد.
اكنون شما دو كاربر ايجاد خواهيد كرد ، يكي به نام مانيتور براي ********SQL و ديگري كه براي اجراي درخواست هاي مربوط به كلاينت و ارائه امتيازات مناسب به آنها استفاده ميكنيد. اين آموزش نام اين كاربر را Sammy خواهد گذاشت.
كاربر مانيتور را ايجاد كنيد:
Mysql> CREATE USER ‘monitor’@’%’ IDENTIFIED BY ‘monitor_password’;
عبارت CREATE USER براي ايجاد يك كاربر جديد استفاده مي شود كه مي تواند از IP هاي خاص متصل شود. استفاده از٪ نشانگر اتصال كاربر از هر آدرس IP است. IDENTIFIED BY كلمه عبور را براي كاربر جديد تنظيم مي كند. هر پسوردي را كه دوست داريد وارد كنيد ، اما حتماً آن را براي استفاده هاي بعدي به خاطر بسپاريد.
پس از ايجاد مانيتور كاربر ، كاربر sammy را ايجاد كنيد:
Mysql> CREATE USER ‘sammy’@’%’ IDENTIFIED BY ‘sammy_password’;
در مرحله بعدي ، به كاربران جديد خود امتياز دهيد. براي پيكربندي مانيتور دستور زير را اجرا كنيد:
Mysql> GRANT SELECT ON sys.* TO ‘monitor’@’%’;
از درخواست GRANT براي دادن امتياز به كاربران استفاده مي شود. در اينجا فقط SELECT را در تمام جداول موجود در پايگاه داده sys به كاربر مانيتور اعطا مي كنيد. فقط به اين امتياز نياز دارد تا به سرور مجازي back-end گوش دهد.
اكنون تمام امتيازات را به كليه بانكهاي اطلاعاتي به كاربر sammy اعطا كنيد:
Mysql> GRANT ALL PRIVILEGES on *.* TO ‘sammy’@’%’;
با اين كار sammy مي تواند براي تست ديتابيس شما سؤالات لازم را ايجاد كند.
با اجراي دستور زير تغييرات امتياز را اعمال كنيد:
Mysql> FLUSH PRIVILEGES;
در آخر ، از پوسته mysql خارج شويد:
Mysql> exit;
اكنون شما سرور مجازي mysql را نصب كرده ايد و كاربري ايجاد كرده ايد كه توسط ********SQL براي نظارت بر سرور مجازي MySQL شما استفاده مي شود ، و كاربر ديگر براي اجراي درخواست هاي كلاينت ميباشد. در مرحله بعد ********SQL را نصب و پيكربندي خواهيد كرد.
مرحله 2 – نصب و پيكربندي سرور مجازي ********SQL
اكنون مي توانيد سرور مجازي ********SQL را نصب كنيد ، كه به عنوان يك لايه حافظه پنهان براي درخواست هاي شما استفاده ميشود. يك لايه حافظه پنهاني به عنوان وقفه بين سرور مجازي هاي برنامه شما و سرور مجازي هاي پشتيبان بانك اطلاعاتي وجود دارد. و براي اتصال سريع به ديتابيس و ذخيره نتايج برخي از درخواست ها در حافظه خود براي دسترسي سريع بعدي استفاده مي شود.
صفحه ********SQL releases Github فايلهاي نصب را براي نسخه هاي رايج لينوكس ارائه مي دهد. براي اين آموزش ، از wget براي دانلود فايل نصب نسخه ********SQL دبيان 2.0.4 استفاده مي كنيد:
$ wget https://github.com/sysown/********sql/releases/download/v2.0.4/********sql_2.0.4-ubuntu16_amd64.deb
سپس ، بسته را با استفاده از dpkg نصب كنيد:
$ sudo dpkg -i ********sql_2.0.4-ubuntu16_amd64.deb
پس از نصب ، ********SQL را با اين دستور شروع كنيد:
$ sudo systemctl start ********sql
با اين دستور مي توانيد بررسي كنيد كه ********SQL به درستي شروع شده است:
$ sudo systemctl status ********sql
خروجي مشابه اين دريافت خواهيد كرد:
Output
root@ubuntu-s-1vcpu-2gb-sgp1-01:~# systemctl status ********sql
● ********sql.service – LSB: High Performance Advanced ******** for MySQL
Loaded: loaded (/etc/init.d/********sql; bad; vendor preset: enabled)
Active: active (exited) since Wed 2019-06-12 21:32:50 UTC; 6 months 7 days ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0
Memory: 0B
CPU: 0
اكنون زمان آن رسيده است كه به سرور مجازي ********SQL خود وصل شويد. براي اين منظور ، از رابط SQL ادمين ********SQL استفاده كنيد ، كه به طور پيش فرض درگاه 6032 را در localhost گوش مي دهد و از admin به عنوان نام كاربري و رمز عبور خود استفاده مي كند.
با اجراي دستور زير به رابط متصل شويد:
$ mysql -uadmin -p -h 127.0.0.1 -P6032
هنگام درخواست رمز عبور ، admin را وارد كنيد.
-uadmin نام كاربري را به عنوان admin تعيين مي كند و فلگ -h ميزبان را به عنوان localhost مشخص مي كند. درگاه 6032 است كه با استفاده از فلگ -P مشخص شده است.
در اينجا شما بايد ميزبان و پورت را به صراحت مشخص كنيد زيرا به طور پيش فرض ، كلاينت MySQL با استفاده از يك فايل محلي و پورت 3306 وصل مي شود.
اكنون كه به عنوان admin وارد پوسته mysql شده ايد ، كاربر مانيتور را پيكربندي كنيد تا ********SQL بتواند از آن استفاده كند. ابتدا براي تنظيم مقادير دو متغير جهاني از درخواست هاي استاندارد SQL استفاده كنيد:
Mysql> UPDATE global_variables SET variable_value=’monitor’ WHERE variable_name=’mysql-monitor_username’;
Mysql> UPDATE global_variables SET variable_value=’monitor_password’ WHERE variable_name=’mysql-monitor_password’;
متغير mysql-monitor_username نام كاربري MySQL را مشخص مي كند كه براي بررسي اينكه سرور مجازي back-end كار ميكند يا نه ، استفاده مي شود. متغير mysql-monitor_password به گذرواژه اي كه هنگام اتصال به سرور مجازي back-end استفاده خواهد شد اشاره مي كند. از رمز عبوري كه براي نام كاربري مانيتور ايجاد كرده ايد استفاده كنيد.
هر بار كه تغييري در رابط ادمين ********SQL ايجاد كنيد ، بايد از دستور LOAD مناسب براي اعمال تغييرات در نمونه در حال اجرا ********SQL استفاده كنيد. شما متغيرهاي جهاني MySQL را تغيير داده ايد ، بنابراين آنها را به RUNTIME بارگذاري كنيد تا تغييرات اعمال شود:
Mysql> LOAD MYSQL VARIABLES TO RUNTIME;
در مرحله بعد ، تغييراتي را در بانك اطلاعاتي روي ديسك ذخيره كنيد تا تغييرات بين ريستارت ها ادامه يابد. ********SQL براي ذخيره جداول و متغيرهاي خاص خود از پايگاه داده محلي SQLite خود استفاده مي كند:
Mysql> SAVE MYSQL VARIABLES TO DISK;
اكنون ، به ********SQL در مورد سرور مجازي back-end اطلاع بدهيد. جدول mysql_servers اطلاعات مربوط به هر سرور مجازي پشتيبان را دارد كه ********SQL مي تواند به آن متصل شود و از آن استفاده كند ، بنابراين با استفاده از يك عبارت SQL استاندارد INSERT با مقادير زير براي hostgroup_id ، hostname و port يك ركورد جديد اضافه كنيد:
Mysql> INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (1, ‘127.0.0.1’, 3306);
براي اعمال تغييرات ، LOAD را اجرا كرده و دوباره SAVE كنيد:
Mysql> LOAD MYSQL SERVERS TO RUNTIME;
Mysql> SAVE MYSQL SERVERS TO DISK;
سرانجام ، به ********SQL خواهيد گفت كه كدام كاربر به سرور مجازي back-end وصل خواهد شد. Sammy را به عنوان كاربر تنظيم كرده و sammy_password را با رمز عبوري كه قبلاً ايجاد كرده ايد جايگزين كنيد:
Mysql> INSERT INTO mysql_users(username, password, default_hostgroup) VALUES (‘sammy’, ‘sammy_password’, 1);
جدول mysql_users اطلاعات مربوط به كاربراني را كه براي اتصال به سرور مجازي هاي back-end استفاده مي شوند ، در اختيار دارد. شما username ، password و default_hostgroup را مشخص كرديد.
تغييرات را دانلود و ذخيره كنيد:
Mysql> LOAD MYSQL USERS TO RUNTIME;
Mysql> SAVE MYSQL USERS TO DISK;
سپس از پوسته mysql خارج شويد:
Mysql> exit;
براي آزمايش اينكه مي توانيد با استفاده از ********SQL به سرور مجازي پشتيبان خود متصل شويد ، درخواست تست زير را اجرا كنيد:
$ mysql -usammy -h127.0.0.1 -p -P6033 -e “SELECT @@HOSTNAME as hostname”
در اين دستور شما از فلگ -e براي اجراي يك درخواست و بستن اتصال استفاده كرده ايد. درخواست نام ميزبان سرور مجازي back-end را چاپ مي كند.
توجه: ********SQL به طور پيش فرض براي گوش دادن به اتصالات ورودي از پورت 6033 استفاده مي كند.
خروجي به اين شكل ظاهر مي شود ، your_hostname با نام ميزبان شما جايگزين مي شود:
Output
+—————————-+
| hostname |
+—————————-+
| your_hostname |
+—————————-+
براي كسب اطلاعات بيشتر در مورد پيكربندي ********SQL ، به مرحله 3 نحوه استفاده از ********SQL به عنوان Load Balancer براي MySQL در اوبونتو 16.04 مراجعه كنيد.
تاكنون ، شما ********SQL را پيكربندي كرده ايد تا از سرور مجازي MySQL خود به عنوان backend استفاده كرده و با استفاده از ********SQL به backend وصل شويد. اكنون ، شما آماده استفاده از mysqlslap براي تست عملكرد درخواست ها بدون ذخيره سازي هستيد.
مرحله 3 – آزمايش با استفاده از mysqlslap بدون ذخيره سازي
در اين مرحله شما يك پايگاه داده تستي را دانلود مي كنيد تا بتوانيد با استفاده از mysqlslap درخواست ها را اجرا كنيد و زمان تأخير بدون حافظه نهان را تست كنيد و معيار سرعت درخواست هاي خود را تعيين نماييد. همچنين بررسي مي كنيد كه چگونه ********SQL سوابق درخواست ها را در جدول stats_mysql_query_digest نگه مي دارد.
mysqlslap يك كلاينت شبيه سازي بار است كه به عنوان يك ابزار تست بار براي MySQL استفاده مي شود. و مي تواند يك سرور مجازي MySQL را با درخواست هاي خودكار ايجاد شده يا برخي از درخواست هاي سفارشي كه در يك پايگاه داده اجرا مي شود ، را آزمايش كند. در بسته كلاينت MySQL نصب شده وجود دارد ، بنابراين نيازي به نصب آن نيست. در عوض ، شما يك پايگاه داده را فقط براي اهداف آزمايش دانلود مي كنيد ، كه مي توانيد از mysqlslap استفاده كنيد.
در اين آموزش از يك نمونه بانك اطلاعاتي كارمند استفاده خواهيد كرد. شما از اين پايگاه داده كارمند استفاده مي كنيد زيرا داراي مجموعه اي از داده هاي بزرگ است كه مي تواند تفاوت هاي بهينه سازي درخواست را نشان دهد. اين بانك اطلاعاتي داراي شش جدول است ، اما داده هاي موجود در آن بيش از 300000 پرونده كارمند ميباشد. اين به شما كمك مي كند تا حجم كار توليدي در مقياس بزرگ را شبيه سازي كنيد.
براي دانلود پايگاه داده ، ابتدا مخزن Github را با استفاده از اين دستور كلون كنيد:
$ git clone https://github.com/datacharmer/test_db.git
سپس دايركتوري test_db را وارد كنيد و با استفاده از اين دستورات پايگاه داده را در سرور مجازي MySQL بارگذاري كنيد:
$ cd test_db
$ mysql -uroot -p < employees.sql9 اين دستور با استفاده از تغيير مسير shell براي خواندن نمايش داده هاي SQL در فايل Staff.sql و اجراي آنها در سرور مجازي MySQL براي ايجاد ساختار پايگاه داده استفاده مي كند. خروجي مانند اين را خواهيد ديد: Output INFO CREATING DATABASE STRUCTURE INFO storage engine: InnoDB INFO LOADING departments INFO LOADING employees INFO LOADING dept_emp INFO LOADING dept_manager INFO LOADING titles INFO LOADING salaries data_load_time_diff 00:00:32 پس از بارگذاري پايگاه داده روي سرور مجازي MySQL خود ، آزمايش كنيد كه mysqlslap با درخواست زير كار كند: $ mysqlslap -usammy -p -P6033 -h127.0.0.1 –auto-generate-sql –verbose mysqlslap داراي فلگ هايي مشابه كلاينت mysql است. در اينجا موارد استفاده شده در اين دستور آمده است: -u كاربر مورد استفاده براي اتصال به سرور مجازي را مشخص مي كند. -p رمزعبور كاربر را درخواست ميكند. -P با استفاده از درگاه مشخص شده متصل مي شود. -h به هاست مشخص شده متصل مي شود. Auto-generate-sql به MySQL اجازه مي دهد تا تست بارگذاري را با استفاده از درخواست هاي توليد شده خود انجام دهد. –verbose باعث مي شود كه خروجي اطلاعات بيشتري را نشان دهد. خروجي شبيه به زير را دريافت خواهيد كرد: Output Benchmark Average number of seconds to run all queries: 0.015 seconds Minimum number of seconds to run all queries: 0.015 seconds Maximum number of seconds to run all queries: 0.015 seconds Number of clients running queries: 1 Average number of queries per client: 0 در اين خروجي مي توانيد تعداد متوسط ، حداقل و حداكثر تعداد ثانيه هايي را كه براي اجراي كليه درخواست ها سپري شده را مشاهده كنيد. اين به شما مقياسي از مدت زمان مورد نياز براي اجراي درخواست توسط تعدادي از كلاينت ها را نشان ميدهد. در اين خروجي ، فقط يك كلاينت براي اجراي درخواست استفاده شده است. در مرحله بعد ، با نگاهي به stats_mysql_query_digest در********SQL ببينيد mysqlslap كدام درخواست ها را در آخرين دستور اجرا كرده است. اين به ما اطلاعاتي مانند digest درخواست ها را مي دهد ، كه يك شكل عادي شده از عبارت SQL است كه بعداً براي فعال كردن حافظه پكيج به آنها مراجعه مي شود. با اين دستور اينترفيس ادمين ********SQL را وارد كنيد: $ mysql -uadmin -p -h 127.0.0.1 -P6032 سپس اين درخواست را براي يافتن اطلاعات در جدول stats_mysql_query_digest اجرا كنيد: Mysql> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;
خروجي مشابه زير را مشاهده خواهيد كرد:
+————+———-+———–+——————–+———————————-+
| count_star | sum_time | hostgroup | digest | digest_text |
+————+———-+———–+——————–+———————————-+
| 1 | 598 | 1 | 0xF8F780C47A8D1D82 | SELECT @@HOSTNAME as hostname |
| 1 | 0 | 1 | 0x226CD90D52A2BA0B | select @@version_comment limit ? |
+————+———-+———–+——————–+———————————-+
2 rows in set (0.01 sec)
درخواست قبلي داده ها را از جدول stats_mysql_query_digest انتخاب مي كند ، كه شامل اطلاعات مربوط به كليه درخواست ها در ********SQL است. در اينجا پنج ستون انتخاب شده است:
count_star: تعداد دفعاتي كه اين درخواست اجرا شد.
sum_time: زمان كل بر حسب ميلي ثانيه است كه براي اجراي اين درخواست استفاده شده است.
hostgroup: گروه ميزباني كه براي اجراي اين درخواست استفاده مي شود.
digest: دايجستي از درخواست اجرا شده.
digest_text: درخواست واقعي. در مثال اين آموزش ، درخواست دوم با استفاده از ؟ به جاي پارامترهاي متغير پارامتريزه شده است . بنابراين، select @@version_comment limit 1 و select @@version_comment limit 2 به عنوان همان درخواست با يك دايجست گروه بندي مي شوند.
اكنون كه مي دانيد چگونه داده هاي درخواست را در جدول stats_mysql_query_digest بررسي كنيد ، از پوسته mysql خارج شويد:
Mysql> exit;
بانك اطلاعاتي كه دانلود كرديد شامل برخي از جداول با داده هاي نمايشي است. اكنون با انتخاب پرونده هايي كه از from_emp آنها بزرگتر از 2000-04-20 باشد ميتوانيد درخواست ها را در dept_emp تست كنيد و ميانگين زمان اجرا را ثبت نماييد.
براي اجراي آزمون از اين دستور استفاده كنيد:
$ mysqlslap -usammy -P6033 -p -h127.0.0.1 –concurrency=100 –iterations=20 –create-schema=employees –query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′” –verbose
در اينجا از چند فلگ جديد استفاده مي كنيد:
–concurrency = 100: تعداد كاربران را براي شبيه سازي تعيين مي كند ، در اين حالت 100.
–iterations=20 : باعث مي شود تست 20 بار اجرا شود و نتايج حاصل از همه آنها محاسبه شود.
–create-schema=employees: در اينجا پايگاه داده كارمندان را انتخاب كرديد.
–query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′”: در اينجا درخواست اجرا شده در آزمون را مشخص كرديد.
آزمون چند دقيقه طول خواهد كشيد. پس از اتمام كار ، نتايج مشابه با موارد زير را دريافت مي كنيد:
Output
Benchmark
Average number of seconds to run all queries: 18.117 seconds
Minimum number of seconds to run all queries: 8.726 seconds
Maximum number of seconds to run all queries: 22.697 seconds
Number of clients running queries: 100
Average number of queries per client: 1
تعداد شما مي تواند كمي متفاوت باشد. اين اعداد را در جايي نگه داريد تا بعد از فعال كردن ذخيره سازي، آنها را با نتايج حاصل از مقايسه كنيد.
پس از آزمايش ********SQL بدون حافظه پنهان ، زمان آن است كه دوباره همان تست را اجرا كنيد ، اما اين بار با فعال سازي حافظه پنهان.
مرحله 4 – آزمايش با استفاده از mysqlslap همراه با ذخيره سازي
در اين مرحله ، حافظه پنهان به ما كمك مي كند تا هنگام اجراي درخواست هاي مشابه ، تاخير را كاهش دهيم. در اينجا ، درخواست هاي اجرا شده را شناسايي مي كنيد ، دايجست آنها را از جدول stats_mysql_query_digest ********SQL مي گيريد و از آنها براي فعال كردن حافظه پنهان استفاده مي كنيد. سپس ، دوباره تست مي كنيد تا اختلاف را بررسي كنيد.
براي فعال كردن حافظه پنهان ، بايد دايجست نمايش داده شد كه در آن ذخيره مي كنيد را بدانيد. با استفاده از اين دستور به رابط ادمين ********SQL وارد شويد:
$ mysql -uadmin -p -h127.0.0.1 -P6032
سپس اين درخواست را مجدداً اجرا كنيد تا ليستي از درخواست ها و آنها دريافت شود:
Ysql> SELECT count_star,sum_time,hostgroup,digest,digest_text FROM stats_mysql_query_digest ORDER BY sum_time DESC;
نتيجه مشابهي با اين خواهيد گرفت:
Output
+————+————-+———–+——————–+——————————————+
| count_star | sum_time | hostgroup | digest | digest_text |
+————+————-+———–+——————–+——————————————+
| 2000 | 33727110501 | 1 | 0xC5DDECD7E966A6C4 | SELECT * from dept_emp WHERE from_date>? |
| 1 | 601 | 1 | 0xF8F780C47A8D1D82 | SELECT @@HOSTNAME as hostname |
| 1 | 0 | 1 | 0x226CD90D52A2BA0B | select @@version_comment limit ? |
+————+————-+———–+——————–+——————————————+
3 rows in set (0.00 sec)
به رديف اول نگاه كنيد. در مورد درخواستي است كه 2000 بار اجرا شده است. اين يك درخواست تست شده است كه قبلاً اجرا شده است. از دايجست آن استفاده كرده و آن را ذخيره كنيد تا در افزودن يك قانون درخواست براي ذخيره سازي استفاده شود.
چند درخواست بعدي يك قانون درخواست جديد به ********SQL اضافه خواهد كرد كه با دايجست درخواست قبلي مطابقت دارد و يك مقدار cache_ttl براي آن قرار مي دهد. cache_ttl تعداد ميلي ثانيه هايي است كه نتيجه در حافظه ذخيره مي شود:
Mysql> INSERT INTO mysql_query_rules(active, digest, cache_ttl, apply) VALUES(1,’0xC5DDECD7E966A6C4′,2000,1);
در اين دستور شما يك ركورد جديد به جدول mysql_query_rules اضافه مي كنيد. اين جدول كليه قواعد اعمال شده قبل از اجراي يك درخواست را در خود جاي داده است. در اين مثال ، شما يك مقدار براي ستون cache_ttl اضافه مي كنيد كه باعث مي شود درخواست منطبق شده توسط دايجست داده شده براي تعداد ميلي ثانيه مشخص شده در اين ستون ذخيره بماند. عدد 1 را در ستون اعمال قرار دهيد تا مطمئن شويد كه اين قانون براي درخواست ها اعمال مي شود.
اين تغييرات را LOAD و SAVE كنيد و سپس از پوست MYSQL خارج شويد:
Mysql> LOAD MYSQL QUERY RULES TO RUNTIME;
Mysql> SAVE MYSQL QUERY RULES TO DISK;
Mysql> exit;
اكنون كه حافظه پنهان فعال است ، دوباره تست كنيد تا نتيجه را بررسي كنيد:
$ mysqlslap -usammy -P6033 -p -h127.0.0.1 –concurrency=100 –iterations=20 –create-schema=employees –query=”SELECT * from dept_emp WHERE from_date>’2000-04-20′” –verbose
اين كار خروجي شبيه به زير را ارائه مي دهد:
Output
Benchmark
Average number of seconds to run all queries: 7.020 seconds
Minimum number of seconds to run all queries: 0.274 seconds
Maximum number of seconds to run all queries: 23.014 seconds
Number of clients running queries: 100
Average number of queries per client: 1
نتيجه
در اين مقاله ، حافظه نهان شفاف را با ********SQL تنظيم كرديد تا بتواند نتايج درخواست از پايگاه داده را ذخيره كند. شما همچنين سرعت درخواست را با و بدون حافظه پنهان آزمايش كرده ايد تا تفاوتي بين caching ايجاد كنيد.
در اين آموزش از يك سطح حافظه پنهان استفاده كرده ايد. همچنين مي توانيد حافظه نهان وب را كه جلوي يك وب سرور مجازي قرار دارد و پاسخ به درخواست هاي مشابه را ذخيره مي كند ، امتحان كنيد ، بدون اينكه به سرور مجازي هاي پشتيبان ضربه بزنيد ، پاسخ را به كلاينت ارسال مي كنيد. اين بسيار شبيه به ذخيره سازي ********SQL است اما در سطح متفاوتي است. براي كسب اطلاعات بيشتر در مورد حافظه پنهان در وب ، اصول اوليه Caching Web خود را بررسي كنيد: اصطلاحات ، هدرهاي HTTP ، و مقدمات برنامه Caching Strategies.
سرور مجازي MySQL همچنين حافظه پنهان درخواست خود را دارد. مي توانيد در مورد آموزش بهينه سازي MySQL با Query Cache در اوبونتو 18.04 اطلاعات بيشتري در مورد آن كسب كنيد.
از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :
نحوه تاييد صحت رمز عبور با Apache در اوبونتو 18.04
نحوه نصب و استفاده از TimescaleDB در CentOS 7
نحوه تاييد صحت رمز عبور با Apache در اوبونتو 18.04 (شروع سريع)
نحوه راه اندازي Eclipse Theia Cloud IDE Platform در Debian 10
نحوه نصب Docker Compose در Debian 10
چگونه مي توان با كتابخانه (library) درخواست ها در پايتون شروع به كار كرد
نحوه اجراي صفحه گذاري در MySQL با PHP روي اوبونتو 18.04
نحوه تنظيم پلتفرم Eclipse Theia Cloud IDE در CentOS 7
بسته بندي برنامه Laravel 6 براي توسعه با Docker Compose در اوبونتو 18.04
نحوه بهينه سازي درخواست هاي MySQL با ذخيره سازي ********SQL در اوبونتو 16.04
نحوه استفاده از Ansible براي نصب و راه اندازي وردپرس با LAMP در اوبونتو 18.04
چگونه مي توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04 تنظيم كرد (شروع سريع)
چگونه مي توان از رول هاي ansible براي انتزاع محيط زيرساختي خود استفاده كرد
نحوه پيكربندي يك خوشه Galera با MySQL در سرورهاي اوبونتو 18.04
نحوه تهيه نسخه پشتيبان و بازيابي يك خوشه Kubernetes در vpsgol با استفاده از Velero
نحوه نصب و استفاده از PostgreSQL در CentOS 7
چگونه مي توان پلتفرم Eclipse Theia Cloud IDE را روي اوبونتو 18.4 تنظيم كرد
نحوه استقرار و مديريت DNS با استفاده از DNSControl در Debian 10
چگونه مي توان پلتفرم Cloud IDE كد سرور را روي CentOS 7 تنظيم كرد
كلمات كليدي خريد سرور
خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خر
د – خريد vps آمريكا – خريد سرور مجازي هلند – خريد وي پي اس – خريد vps هلند – خريد vps فرانسه