Some queries from Web interface aren't using indexes requiring too much time on v3.1.3
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- mysql, python
- Lĩnh vực
- backend, databases, performance
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện truy vấn của giao diện Web state=*\u0026archive=true và chạy SQL được cung cấp với EXPLAIN trên MySQL. Truy vết đường đi của truy vấn tạo ra câu lệnh này, sau đó xác minh rằng truy vấn sử dụng các chỉ mục phù hợp và theo slow log không còn mất quá 90 giây.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
This query: state=*&archive=true
Is producing a complex sql statement that it is not using indexes and are taking a long time to complete:
explain SELECT (coalesce((SELECT count FROM patchwork_patchtag WHERE patchwork_patchtag.patch_id=patchwork_patch.id AND patchwork_patchtag.tag_id=1), 0)) AS `tag_1_count`, (coalesce((SELECT count FROM patchwork_patchtag WHERE patchwork_patchtag.patch_id=patchwork_patch.id AND patchwork_patchtag.tag_id=2), 0)) AS `tag_2_count`, (coalesce((SELECT count FROM patchwork_patchtag WHERE patchwork_patchtag.patch_id=patchwork_patch.id AND patchwork_patchtag.tag_id=3), 0)) AS `tag_3_count`, (coalesce((SELECT count FROM patchwork_patchtag WHERE patchwork_patchtag.patch_id=patchwork_patch.id AND patchwork_patchtag.tag_id=4), 0)) AS `tag_4_count`, (coalesce((SELECT count FROM patchwork_patchtag WHERE patchwork_patchtag.patch_id=patchwork_patch.id AND patchwork_patchtag.tag_id=5), 0)) AS `tag_5_count`, `patchwork_patch`.`id`, `patchwork_patch`.`msgid`, `patchwork_patch`.`date`, `patchwork_patch`.`submitter_id`, `patchwork_patch`.`project_id`, `patchwork_patch`.`name`, `patchwork_patch`.`delegate_id`, `patchwork_patch`.`state_id`, `patchwork_patch`.`series_id`, `patchwork_person`.`id`, `patchwork_person`.`email`, `patchwork_person`.`name`, `patchwork_person`.`user_id`, `auth_user`.`id`, `auth_user`.`password`, `auth_user`.`last_login`, `auth_user`.`is_superuser`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`date_joined`, `patchwork_state`.`id`, `patchwork_state`.`name`, `patchwork_state`.`slug`, `patchwork_state`.`ordering`, `patchwork_state`.`action_required`, `patchwork_series`.`id`, `patchwork_series`.`name` FROM `patchwork_patch` INNER JOIN `patchwork_person` ON (`patchwork_patch`.`submitter_id` = `patchwork_person`.`id`) LEFT OUTER JOIN `auth_user` ON (`patchwork_patch`.`delegate_id` = `auth_user`.`id`) LEFT OUTER JOIN `patchwork_state` ON (`patchwork_patch`.`state_id` = `patchwork_state`.`id`) LEFT OUTER JOIN `patchwork_series` ON (`patchwork_patch`.`series_id` = `patchwork_series`.`id`) WHERE (`patchwork_patch`.`project_id` = 1 AND `patchwork_patch`.`archived`) ORDER BY `patchwork_patch`.`date` DESC LIMIT 1000;
+------+--------------------+--------------------+--------+----------------------------------------------------------------------+--------------------------+---------+----------------------------------------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+--------------------+--------------------+--------+----------------------------------------------------------------------+--------------------------+---------+----------------------------------------+-------+-----------------------------+
| 1 | PRIMARY | patchwork_patch | ref | patchwork_patch_499df97c,patchwork_patch_1a37f020,patch_covering_idx | patchwork_patch_499df97c | 4 | const | 30607 | Using where; Using filesort |
| 1 | PRIMARY | patchwork_person | eq_ref | PRIMARY | PRIMARY | 4 | patchwork.patchwork_patch.submitter_id | 1 | |
| 1 | PRIMARY | auth_user | eq_ref | PRIMARY | PRIMARY | 4 | patchwork.patchwork_patch.delegate_id | 1 | Using where |
| 1 | PRIMARY | patchwork_state | eq_ref | PRIMARY | PRIMARY | 4 | patchwork.patchwork_patch.state_id | 1 | Using where |
| 1 | PRIMARY | patchwork_series | eq_ref | PRIMARY | PRIMARY | 4 | patchwork.patchwork_patch.series_id | 1 | Using where |
| 6 | DEPENDENT SUBQUERY | patchwork_patchtag | eq_ref | patch_id | patch_id | 8 | patchwork.patchwork_patch.id,const | 1 | |
| 5 | DEPENDENT SUBQUERY | patchwork_patchtag | eq_ref | patch_id | patch_id | 8 | patchwork.patchwork_patch.id,const | 1 | |
| 4 | DEPENDENT SUBQUERY | patchwork_patchtag | eq_ref | patch_id | patch_id | 8 | patchwork.patchwork_patch.id,const | 1 | |
| 3 | DEPENDENT SUBQUERY | patchwork_patchtag | eq_ref | patch_id | patch_id | 8 | patchwork.patchwork_patch.id,const | 1 | |
| 2 | DEPENDENT SUBQUERY | patchwork_patchtag | eq_ref | patch_id | patch_id | 8 | patchwork.patchwork_patch.id,const | 1 | |
+------+--------------------+--------------------+--------+----------------------------------------------------------------------+--------------------------+---------+----------------------------------------+-------+-----------------------------+
As reported by mysql slow log, it takes more than 1:30 mins to complete:
# Thread_id: 5213 Schema: patchwork QC_hit: No
# Query_time: 92.553408 Lock_time: 0.000355 Rows_sent: 1000 Rows_examined: 101124
# Rows_affected: 0 Bytes_sent: 367857
Issue noticed at https://patchwork.linuxtv.org.
- Ngôn ngữ chính
- Python
- Star
- 317
- Fork
- 91
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của getpatchwork/patchwork
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
getpatchwork/patchwork#668 ·
-
bug web-ui
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
getpatchwork/patchwork#546 · 2 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
getpatchwork/patchwork#664 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
getpatchwork/patchwork#663 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
getpatchwork/patchwork#645 ·
Tất cả issue của getpatchwork/patchwork
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
learningequality/ricecooker#747 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
run-llama/llama_index#23199 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
KhronosGroup/glTF-Blender-IO#2769 ·