Có tăng hiệu suất bằng cách xử lý dữ liệu với các thủ tục được lưu trữ so với việc đưa nó vào các chức năng sau khi truy xuất không?


8

Tiêu đề tổng hợp nó lên. Tôi khá hợp với PHP và thoải mái để nó làm những gì tôi cần với các giá trị được lấy từ MySQL, tuy nhiên vì lợi ích của việc mở rộng kiến ​​thức của tôi, tôi đã tự hỏi liệu có lẽ đó sẽ là một kỹ thuật hiệu quả hơn trong chạy dài. Chúng có tương đương không (do cuối cùng có cùng số lượng xử lý), hoặc có trường hợp nào cái này thể hiện một lợi thế khác biệt so với cái kia không?


3
Câu hỏi hay và quan điểm thảo luận lâu dài .. bên APP sẽ có bao nhiêu, bên DB sẽ được thực hiện bao nhiêu. Bạn có thể muốn viết lại nó thành "RDBMS thành Lớp APP", vì câu hỏi áp dụng cho tất cả các loại tương tác DB và APP.
Sebastian Roth

2
Tôi muốn thêm vào câu hỏi này thật tệ, nhưng tôi không có gì quan tâm để thêm. Đây là một câu hỏi hay, và tôi không muốn trở thành một faq kinh điển
jcolebrand

Tôi đã thực sự suy ngẫm khi đặt câu hỏi này, liệu nó có phải là chủ đề ở đây cho các DBA không. Tôi đã tìm kiếm một cái gì đó hoàn toàn khác và tìm thấy cái này một cách tình cờ. Vì vậy, +1 để đọc suy nghĩ của tôi
Derek Downey

Câu trả lời:


6

Nó phụ thuộc rất nhiều vào những gì bạn đang làm với các bản ghi và kiến ​​trúc mạng của bạn trông như thế nào. Ví dụ: nếu thủ tục được lưu trữ sẽ làm giảm tổng lượng dữ liệu được truyền từ MySQL sang PHP và bạn có một liên kết tương đối chậm giữa cá thể PHP và cơ sở dữ liệu, SP chắc chắn có thể giúp bạn.

Tôi khuyên bạn nên bắt đầu với một số thao tác 'nặng hơn' mà bạn thực hiện đối với dữ liệu của mình về phía PHP, xem những gì bạn có thể viết dưới dạng SP và sau đó điểm chuẩn nó.


5

Một điểm có lợi cho việc xử lý nhiều hơn trong cơ sở dữ liệu là cơ sở dữ liệu không thể tối ưu hóa những gì nó không nhìn thấy. Ví dụ, đặt thuộc tính của một lớp bền vững thành giá trị không đổi cho tất cả các trường hợp chắc chắn sẽ hoạt động tốt hơn nếu được thực hiện trong lớp cơ sở dữ liệu.

Một điểm chống lại là cơ sở dữ liệu rất tốt trong các hoạt động dựa trên tập hợp, nhưng không tốt cho các hoạt động dựa trên hàng. Ví dụ: một cái gì đó như chuyển đổi thời gian UTC sang giờ địa phương dựa trên múi giờ khác nhau trên mỗi hàng có thể không hoạt động tốt trong cơ sở dữ liệu như trong lớp ứng dụng.


Một điểm tuyệt vời về trình tối ưu hóa.
TML

2

Thông thường nếu kết quả là tổng hợp, (sum, avg, Count) thì việc tính toán trong máy chủ cơ sở dữ liệu sẽ nhanh hơn nhiều, bằng cách tránh giao tiếp không cần thiết giữa máy chủ và máy khách. Ngoài ra, đặt hàng và nhóm có thể có lợi cho các chỉ mục, làm giảm số lượng tính toán.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.