اگر نصب سرور TestRail خود را برای مدت طولانی اجرا میکنید، پایگاه داده ممکن است موارد و/یا آزمایشهای اضافی را جمعآوری کند. تست ها و موارد اضافی نتیجه کد ناکارآمد در TestRail است که در نسخه TestRail ۵.۵ ما بهینه شده بود.
ردیفهای اضافی برای تستکیسها ایجاد شدهاند که در یک اجرای تست هم در زمان ایجاد آن اجراها و هم در زمان بسته شدن اجراها انتخاب نشدهاند. این برنامه به خوبی کار میکرد، اما این دادههای اضافی را در طول زمان جمعآوری میکرد و در نهایت اندازه موارد و جدول آزمایشها باعث کاهش عملکرد میشد. در نتیجه ممکن است کاهش سرعت و وقفه زمانی قفل رخ دهد.
بسته به سن پایگاه داده و فعالیت، تا ۹۰٪ یا بیشتر از ردیف ها می توانند اضافی باشند.
ما به مشتریانی کمک کردهایم که در نتیجه این دادههای اضافی، هم در زیرساختهای ابری و هم در نصبهای داخلی (سرور) با مشکلات عملکرد مواجه شوند. برای حل مشکلات، از چند اسکریپت برای شناسایی و حذف ردیفهای اضافی از پایگاه داده TestRail استفاده کردهایم. طبق تقاضای رایج، ما اسکریپت ها را برای استفاده توسط مشتریان سروری که می خواهند از آنها برای بهبود عملکرد نصب TestRail خود استفاده کنند، در دسترس قرار می دهیم.
از آنجایی که MySQL Innodb در حذف انبوه ردیفها خوب نیست، اسکریپتها از روش «کپی، رها کردن و تغییر نام» استفاده میکنند که بسیار سریعتر است (حتی با برخی پایگاههای داده مشتریان، روزها سریعتر). اسکریپت نسخه های جدیدی از جداول را ایجاد می کند و آنها را با ردیف های معتبر پر می کند. آنها همچنین نسخه هایی از جداول را با ردیف های اضافی ایجاد می کنند. به طور موثر اسکریپت ها جداول را به جداول خوب و بد تقسیم می کنند. پس از ایجاد آن جداول، جداول قدیمی حذف می شوند و جداول خوب تغییر نام می دهند تا به نسخه های جدید جداول تبدیل شوند.
جداول به دست آمده در پایگاه داده “فقط در مورد” باقی می مانند. پس از مدت زمان معقولی برای اطمینان از اینکه همه چیز درست است، می توان آنها را رها کرد. این به طور بالقوه می تواند عملکرد را به طور قابل توجهی افزایش دهد، از جمله حذف اجرای تست بسته قدیمی.
اسکریپت ها را می توان در زیر یافت و باید با استفاده از دستور زیر اجرا شوند:
php [mr_newtest.php, mr_newcase.php] -h {host} -u {user} -p{password or leave blank and it prompts you} -d {database}
توصیه می کنیم اسکریپت ها را خارج از ساعات اداری اجرا کنید زیرا جداول را قفل می کنند. لطفا قبل از اجرای اسکریپت ها یک نسخه پشتیبان از پایگاه داده خود ایجاد کنید!
خروجی نمونه به صورت زیر است:
php mr_newtest.php -h <hostname> -u <user> -p -d <db>
03/04/2021 02:04:32 am: dropping new_tests table if it exists
03/04/2021 02:04:32 am: dropping deadwood_tests table if it exists
03/04/2021 02:04:32 am: dropping old_tests table if it exists
03/04/2021 02:04:32 am: creating new_tests table
03/04/2021 02:04:32 am: creating deadwood_tests table
03/04/2021 02:04:32 am: Locking all tables
03/04/2021 02:04:32 am: inserting is_selected = 1 tests into new_tests table
03/04/2021 02:04:32 am: insert into new_tests select * from tests where is_selected = 1
03/04/2021 02:48:56 am: inserting is_selected = 0 tests into deadwood_tests table
03/04/2021 02:48:56 am: insert into deadwood_tests select * from tests where is_selected = 0
03/04/2021 07:57:57 am: counting rows in new_tests table
03/04/2021 07:58:13 am: Number of rows in new_tests table: 17849816
03/04/2021 07:58:13 am: counting rows in deadwood_tests table
03/04/2021 08:01:42 am: Number of rows in deadwood_tests table: 796606952
03/04/2021 08:01:42 am: unlocking all tables
03/04/2021 08:01:42 am: Renaming tables
03/04/2021 08:01:42 am: dropping old_tests table
03/04/2021 08:01:49 am: Finished.
لطفاً توجه داشته باشید که پس از اجرای اسکریپت(های) ممکن است کاهشی در اندازه کلی پایگاه داده خود مشاهده نکنید. این به دلیل ایجاد جداول موقت با داده های اضافی است که در آنها کپی شده است. همانطور که در بالا ذکر شد، هنگامی که از اینکه نمونه TestRail شما به درستی با داده های مورد نظر کار می کند خوشحال هستید، می توانید آنها را با کاهش اندازه کلی پایگاه داده حذف کنید.

