پرش به مطلب اصلی

Slow Queries

قابلیت Slow Queries در دیتابیس ابری آروان به شما کمک می‌کند تا کوئری‌هایی که در ۲۴ ساعت گذشته زمان زیادی طول کشیدند تا اجرا شوند را شناسایی کنید. با بررسی این داده‌ها می‌توانید مشکلات مرتبط با کارایی (Performance) دیتابیس‌تان را سریع‌تر عیب‌یابی و حل کنید. راهکار این مشکلات می‌تواند بهبود کوئری، تنظیم Indexها یا پیکربندی اسکیما (Schema) و تنظیمات دیتابیس باشد.

جمع‌آوری و نمایش این لاگ‌ها به‌شکل مدیریت‌شده و خودکار انجام می‌شود و داده‌ها تا ۲۴ ساعت نگه‌داری می‌شوند.

توجه داشته باشید که این قابلیت در حال حاضر فقط برای دیتابیس‌های MySQL در دسترس است.

مشاهده Slow Queries

برای مشاهده‌ی لیست Slow Queries از منوی دیتابیس ابری آروان‌کلاد و بخش لیست دیتابیس‌ها روی کلاستر موردنظرتان کلیک کرده و تب «لاگ‌ها» را انتخاب کنید.

در این صفحه می‌توانید لیستی از Slow Queries را با جزییات زیر بررسی کنید:

  • User

    نام کاربری که کوئری را اجرا کرده است.

  • Time

    زمان اجرای کوئری

  • Host IP

    آدرسی IPای که کوئری از مبدا آن اجرا شده است.

  • Query Time

    کل مدت زمانی که اجرای کوئری طول کشیده.

  • Lock Time

    زمانی که کوئری برای به‌دست آوردن Table Lock منتظر مانده (مثل زمانی که توسط عملیات دیگری مسدود شده باشد).

  • Query

    متن دقیق کوئری SQL با دکمه‌ی کپی برای استفاده‌ و بررسی سریع‌تر

آزمایش عملکرد Slow Queries

شما می‌توانید به‌کمک سناریوهای زیر از عملکرد این قابلیت اطمینان پیدا کنید. پیش از اجرای این سناریوها باید یک کلاستر دیتابیس MySQL بسازید و به‌کمک شل ابری آروان‌کلاد یا هر کلاینت MySQL دیگری به دیتابیس متصل شوید.

سناریو ۱: ایجاد تاخیر ساده

کوئری زیر را اجرا کنید:

SELECT SLEEP (6);

این کوئری به مدت ۶ ثانیه اجرا خواهد شد که از آستانه‌ی ۵ ثانیه‌ای طولانی‌تر است. به همین دلیل با ورود به تب لاگ‌ها می‌توانید آن را در لیست Slow Queries ببینید.

سناریو ۲: اجرای یک کوئری Join پیچیده با داده‌های نمونه

ابتدا دو جدول ایجاد کنید:

CREATE TABLE `default`.`person` (
`id` INT NOT NULL,
`name` VARCHAR(255),
`class` VARCHAR(255),
`age` INT,
`salary` DECIMAL(10,2),
`phone number` INT,
`national id` INT,
`account id` INT,
`address` VARCHAR(255),
PRIMARY KEY (`id`)
);

CREATE TABLE `default`.`person1` (
`id` INT NOT NULL,
`name` VARCHAR(255),
`class` VARCHAR(255),
`age` INT,
`salary` DECIMAL(10,2),
`phone number` INT,
`national id` INT,
`account id` INT,
`address` VARCHAR(255),
PRIMARY KEY (`id`)
);

سپس آن‌ها را با استفاده از ابزارهایی مانند Navicat یا اسکریپت‌های SQL با داده‌های تصادفی پر کنید. بسته به توان پردازشی دیتابیس این دو جدول باید با تعداد بالایی از رکوردها (مثلن یک میلیون رکورد) پر شوند.

پس از آن کوئری زیر را اجرا کنید:

SELECT t1.*, t2.*
FROM person t1
JOIN person1 t2 ON t1.id != t2.id
WHERE t1.name LIKE '%slowsearch%'
AND t2.class = 'active'
AND t1.age < (
SELECT MAX(age)
FROM person
WHERE class = 'inactive'
)
ORDER BY t1.age DESC
LIMIT 1000;

اکنون می‌توانید با Refresh کردن تب Slow Queries در پنل کاربری آروان، این کوئری را مشاهده کنید.