ubuntu

نحوه بهینه سازی درخواست های MySQL

مقدمه
ProxySQL یک t آگاه به SQL است که می تواند بین برنامه شما و پایگاه داده شما قرار بگیرد. این نرم افزار بسیاری از ویژگی ها ، مانند تعادل بار بین چندین سرور مجازی MySQL را ارائه میدهد و به عنوان یک لایه حافظه پنهان برای درخواست ها عمل میکند. در این آموزش به ویژگی دخیره سازی ProxySQL و نحوه بهینه سازی درخواست ها برای پایگاه داده MySQL شما پرداخته می شود.
ذخیره سازی MySQL زمانی اتفاق می افتد که نتیجه یک درخواست به گونه ای ذخیره می شود که هنگامی که آن درخواست تکرار میگردد ، بدون نیاز به مرتب سازی در پایگاه داده ، نتیجه می تواند برگردانده شود. این ویژگی می تواند سرعت درخواست های معمول را به میزان قابل توجهی افزایش دهد. اما در بسیاری از روش های ذخیره سازی ، توسعه دهندگان باید کد برنامه خود را اصلاح کنند ، که می تواند یک اشکال را در پایگاه داده وارد کند. برای جلوگیری از این عمل مستعد خطا ،ProxySQL به شما امکان می دهد یک ذخیره سازی شفاف را انجام دهید.
در ذخیره سازی شفاف ، فقط ادمین های دیتابیس باید جهت فعال کردن حافظه پنهان برای متداول ترین درخواست ها ، پیکربندی ProxySQL را تغییر دهند و این تغییرات می تواند از طریق رابط ادمین ProxySQL انجام شود. همه کاری که توسعه دهنده باید انجام دهد اتصال به پروکسی آگاه به پروتکل است ، و پروکسی تصمیم می گیرد که آیا درخواستی را می توان از حافظه نهان بدون ضربه زدن به سرور مجازی back-end ارائه داد یا خیر.
در این آموزش از ProxySQL برای تنظیم ذخیره سازی شفاف برای سرور مجازی MySQL در اوبونتو 16.04 استفاده خواهید کرد. سپس می توانید عملکرد آن را با استفاده از mysqlslap با و بدون حافظه پنهان آزمایش کنید تا تأثیر حافظه پنهان و مدت زمان صرفه جویی در هنگام اجرای بسیاری از سؤالات مشابه را نشان دهید.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
• یک سرور مجازی Ubuntu 16.04 با حداقل 2 گیگابایت رم ، با یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده است ، همانطور که در راهنمای راه اندازی سرور مجازی اولیه Ubuntu 16.04 ما گفته شده است.
مرحله 1 – نصب و تنظیم سرور مجازی MySQL
ابتدا ، سرور مجازی MySQL را نصب کرده و پیکربندی می کنید تا توسط ProxySQL به عنوان یک سرور مجازی back-end برای ارائه خدمات به درخواست های کلاینت استفاده شود.
در Ubuntu 16.04 ، سرور مجازی mysql با استفاده از این دستور قابل نصب است:
$ sudo apt-get install mysql-server

Y را فشار دهید تا نصب را تأیید کنید.
سپس از شما رمزعبور کاربر روت MySQL خواسته می شود. یک رمزعبور قوی وارد کنید و آن را برای استفاده بعدی ذخیره کنید.
اکنون که سرور مجازی MySQL خود را آماده کرده اید ، آن را پیکربندی می کنید تا ProxySQL به درستی کار کند. برای نظارت بر سرور مجازی MySQL ، باید یک کاربر مانیتور برای ProxySQL اضافه کنید ، زیرا ProxySQL به جای استفاده از اتصال TCP یا درخواست های HTTP GET ، به سرور مجازی پشتیبان از طریق پروتکل SQL گوش می دهد تا مطمئن شود که backend  در حال اجرا است. مانیتور از یک اتصال SQL ساختگی (مجازی) برای تعیین اینکه سرور مجازی در حال کار است یا خیر استفاده می کند.
ابتدا وارد پوسته MySQL شوید:
$ mysql -uroot -p
-uroot با استفاده از کاربر روت MySQL شما را وارد می کند و –p رمزعبور کاربر root را می خواهد. این کاربر روت با کاربر اصلی سرور مجازی شما متفاوت است و رمز عبور چیزی است که هنگام نصب بسته mysql-server وارد کرده اید.
رمز عبور اصلی را وارد کنید و ENTER را فشار دهید.
اکنون شما دو کاربر ایجاد خواهید کرد ، یکی به نام مانیتور برای ProxySQL و دیگری که برای اجرای درخواست های مربوط به کلاینت و ارائه امتیازات مناسب به آنها استفاده میکنید. این آموزش نام این کاربر را 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 را نصب کرده اید و کاربری ایجاد کرده اید که توسط ProxySQL برای نظارت بر سرور مجازی MySQL شما استفاده می شود ، و کاربر دیگر برای اجرای درخواست های کلاینت میباشد. در مرحله بعد ProxySQL را نصب و پیکربندی خواهید کرد.
مرحله 2 – نصب و پیکربندی سرور مجازی ProxySQL
اکنون می توانید سرور مجازی ProxySQL را نصب کنید ، که به عنوان یک لایه حافظه پنهان برای درخواست های شما استفاده میشود. یک لایه حافظه پنهانی به عنوان وقفه بین سرور مجازی های برنامه شما و سرور مجازی های پشتیبان بانک اطلاعاتی وجود دارد. و برای اتصال سریع به دیتابیس و ذخیره نتایج برخی از درخواست ها در حافظه خود برای دسترسی سریع بعدی استفاده می شود.
صفحه  ProxySQL releases Github فایلهای نصب را برای نسخه های رایج لینوکس ارائه می دهد. برای این آموزش ، از wget برای دانلود فایل نصب نسخه ProxySQL دبیان 2.0.4 استفاده می کنید:
$ wget https://github.com/sysown/proxysql/releases

/download/v2.0.4/proxysql_2.0.4-ubuntu16_amd64.deb

سپس ، بسته را با استفاده از dpkg نصب کنید:
$ sudo dpkg -i proxysql_2.0.4-ubuntu16_amd64.deb

پس از نصب ، ProxySQL را با این دستور شروع کنید:
$ sudo systemctl start proxysql

با این دستور می توانید بررسی کنید که ProxySQL به درستی شروع شده است:
$ sudo systemctl status proxysql

خروجی مشابه این دریافت خواهید کرد:
Output
root@ubuntu-s-1vcpu-2gb-sgp1-01:~# systemctl status proxysql
● proxysql.service – LSB: High Performance Advanced Proxy for MySQL
Loaded: loaded (/etc/init.d/proxysql; 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

اکنون زمان آن رسیده است که به سرور مجازی ProxySQL خود وصل شوید. برای این منظور ، از رابط SQL ادمین ProxySQL استفاده کنید ، که به طور پیش فرض درگاه 6032 را در localhost گوش می دهد و از admin به عنوان نام کاربری و رمز عبور خود استفاده می کند.
با اجرای دستور زیر به رابط متصل شوید:
$ mysql -uadmin -p -h 127.0.0.1 -P6032

هنگام درخواست رمز عبور ، admin را وارد کنید.
-uadmin نام کاربری را به عنوان admin تعیین می کند و فلگ -h میزبان را به عنوان localhost مشخص می کند. درگاه 6032 است که با استفاده از فلگ -P مشخص شده است.
در اینجا شما باید میزبان و پورت را به صراحت مشخص کنید زیرا به طور پیش فرض ، کلاینت MySQL با استفاده از یک فایل محلی و پورت 3306 وصل می شود.
اکنون که به عنوان admin وارد پوسته mysql شده اید ، کاربر مانیتور را پیکربندی کنید تا ProxySQL بتواند از آن استفاده کند. ابتدا برای تنظیم مقادیر دو متغیر جهانی از درخواست های استاندارد 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 استفاده خواهد شد اشاره می کند. از رمز عبوری که برای نام کاربری مانیتور ایجاد کرده اید استفاده کنید.
هر بار که تغییری در رابط ادمین ProxySQL ایجاد کنید ، باید از دستور LOAD مناسب برای اعمال تغییرات در نمونه در حال اجرا ProxySQL استفاده کنید. شما متغیرهای جهانی MySQL را تغییر داده اید ، بنابراین آنها را به RUNTIME بارگذاری کنید تا تغییرات اعمال شود:
Mysql> LOAD MYSQL VARIABLES TO RUNTIME;
در مرحله بعد ، تغییراتی را در بانک اطلاعاتی روی دیسک ذخیره کنید تا تغییرات بین ریستارت ها ادامه یابد. ProxySQL برای ذخیره جداول و متغیرهای خاص خود از پایگاه داده محلی SQLite خود استفاده می کند:
Mysql> SAVE MYSQL VARIABLES TO DISK;

اکنون ، به ProxySQL در مورد سرور مجازی back-end اطلاع بدهید. جدول mysql_servers اطلاعات مربوط به هر سرور مجازی پشتیبان را دارد که ProxySQL می تواند به آن متصل شود و از آن استفاده کند ، بنابراین با استفاده از یک عبارت 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;
سرانجام ، به ProxySQL خواهید گفت که کدام کاربر به سرور مجازی 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;

برای آزمایش اینکه می توانید با استفاده از ProxySQL به سرور مجازی پشتیبان خود متصل شوید ، درخواست تست زیر را اجرا کنید:
$ mysql -usammy -h127.0.0.1 -p -P6033 -e “SELECT @@HOSTNAME as hostname”
در این دستور شما از فلگ -e برای اجرای یک درخواست و بستن اتصال استفاده کرده اید. درخواست نام میزبان سرور مجازی back-end را چاپ می کند.
توجه: ProxySQL به طور پیش فرض برای گوش دادن به اتصالات ورودی از پورت 6033 استفاده می کند.
خروجی به این شکل ظاهر می شود ، your_hostname با نام میزبان شما جایگزین می شود:
Output
+—————————-+
| hostname |
+—————————-+
| your_hostname |
+—————————-+

برای کسب اطلاعات بیشتر در مورد پیکربندی ProxySQL ، به مرحله 3 نحوه استفاده از ProxySQL به عنوان Load Balancer برای MySQL در اوبونتو 16.04 مراجعه کنید.
تاکنون ، شما ProxySQL را پیکربندی کرده اید تا از سرور مجازی MySQL خود به عنوان backend استفاده کرده و با استفاده از ProxySQL به backend وصل شوید. اکنون ، شما آماده استفاده از mysqlslap برای تست عملکرد درخواست ها بدون ذخیره سازی هستید.
مرحله 3 – آزمایش با استفاده از mysqlslap بدون ذخیره سازی
در این مرحله شما یک پایگاه داده تستی را دانلود می کنید تا بتوانید با استفاده از mysqlslap درخواست ها را اجرا کنید و زمان تأخیر بدون حافظه نهان را تست کنید و معیار سرعت درخواست های خود را تعیین نمایید. همچنین بررسی می کنید که چگونه ProxySQL سوابق درخواست ها را در جدول 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 درProxySQL ببینید mysqlslap  کدام درخواست ها را در آخرین دستور اجرا کرده است. این به ما اطلاعاتی مانند  digest درخواست ها را می دهد ، که یک شکل عادی شده از عبارت SQL است که بعداً برای فعال کردن حافظه پکیج به آنها مراجعه می شود. با این دستور اینترفیس ادمین ProxySQL را وارد کنید: $ 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 انتخاب می کند ، که شامل اطلاعات مربوط به کلیه درخواست ها در ProxySQL است. در اینجا پنج ستون انتخاب شده است:
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

تعداد شما می تواند کمی متفاوت باشد. این اعداد را در جایی نگه دارید تا بعد از فعال کردن ذخیره سازی، آنها را با نتایج حاصل از مقایسه کنید.
پس از آزمایش ProxySQL بدون حافظه پنهان ، زمان آن است که دوباره همان تست را اجرا کنید ، اما این بار با فعال سازی حافظه پنهان.
مرحله 4 – آزمایش با استفاده از mysqlslap همراه با ذخیره سازی
در این مرحله ، حافظه پنهان به ما کمک می کند تا هنگام اجرای درخواست های مشابه ، تاخیر را کاهش دهیم. در اینجا ، درخواست های اجرا شده را شناسایی می کنید ، دایجست آنها را از جدول stats_mysql_query_digest ProxySQL می گیرید و از آنها برای فعال کردن حافظه پنهان استفاده می کنید. سپس ، دوباره تست می کنید تا اختلاف را بررسی کنید.
برای فعال کردن حافظه پنهان ، باید دایجست نمایش داده شد که در آن ذخیره می کنید را بدانید. با استفاده از این دستور به رابط ادمین ProxySQL وارد شوید:
$ 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 بار اجرا شده است. این یک درخواست تست شده است که قبلاً اجرا شده است. از دایجست آن استفاده کرده و آن را ذخیره کنید تا در افزودن یک قانون درخواست برای ذخیره سازی استفاده شود.
چند درخواست بعدی یک قانون درخواست جدید به ProxySQL اضافه خواهد کرد که با دایجست درخواست قبلی مطابقت دارد و یک مقدار 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

نتیجه
در این مقاله ، حافظه نهان شفاف را با ProxySQL تنظیم کردید تا بتواند نتایج درخواست از پایگاه داده را ذخیره کند. شما همچنین سرعت درخواست را با و بدون حافظه پنهان آزمایش کرده اید تا تفاوتی بین caching ایجاد کنید.
در این آموزش از یک سطح حافظه پنهان استفاده کرده اید. همچنین می توانید حافظه نهان وب را که جلوی یک وب سرور مجازی قرار دارد و پاسخ به درخواست های مشابه را ذخیره می کند ، امتحان کنید ، بدون اینکه به سرور مجازی های پشتیبان ضربه بزنید ، پاسخ را به کلاینت ارسال می کنید. این بسیار شبیه به ذخیره سازی ProxySQL است اما در سطح متفاوتی است. برای کسب اطلاعات بیشتر در مورد حافظه پنهان در وب ، اصول اولیه Caching Web خود را بررسی کنید: اصطلاحات ، هدرهای HTTP ، و مقدمات برنامه Caching Strategies.
سرور مجازی MySQL همچنین حافظه پنهان درخواست خود را دارد. می توانید در مورد آموزش بهینه سازی MySQL با Query Cache در اوبونتو 18.04 اطلاعات بیشتری در مورد آن کسب کنید.

 

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

راه اندازی اولیه سرور با CentOS 8   –  تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8   –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker [Quickstart]   –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –   مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04    –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7   –  نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron برای خودکارسازی کارها در اوبونتو 18  –

نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

نحوه راه اندازی 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  –

بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04

چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی –

نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

 

 

کلمات  کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/