Gửi mọi người Group Telegream Wecommit Public Community : www.wecommit.com.vn/wecommitcommunity ,anh em có thể trao đổi những câu hỏi , vấn đề khi xem Video và kết nối với tôi trong Group nhé (trường hợp click trực tiếp bị lỗi thì ae copy link ra browser nhé)
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
Thật sự rất cảm ơn chia sẻ của anh, những ae dev ít kinh nghiệm thì rất hiếm có cơ hội tìm tòi ra được kiến thức như thế này, vừa rồi em làm task update SQL để cải thiện performance nếu biết được điều này sớm có lẽ đã làm tốt hơn rồi. Cảm ơn a
Ngoài video anh còn viết rất nhiều bài viết (có bài viết mới hàng tuần), em có thể vào nhóm này để cập nhật toàn bộ danh sách bài viết của anh nhé: wecommit.com.vn/zalogroup. Video youtube thì anh cũng đăng đều đặn, em đăng ký kênh để nhận các video mới một cách nhanh nhất. Anh cũng cảm ơn sự ghi nhận của em, những lời của em tiếp thêm động lực cho anh :)
Video hay … nhưng giờ hầu hết các web framework sẽ lo phần này rồi, các dev cũng đỡ bận tâm … nhưng mấy thánh dev tool dựa vào database của app khác thì nên quan tâm.
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
a cho em hỏi, nếu là viết trong procedure có truyền biến từ webserver lên, xử lý logic sẽ sử dụng các biến đó, thì TH này có đươc hiểu đúng như chiến lược anh chỉ không anh nhỉ
theo kiến thức hạn hẹp của mình thì bth mọi người viết ứng dụng sẽ có các framework orm giúp gen querry nên nó sẽ ko tối ưu, còn được viết trực tiếp raw querry thế này thì sẽ tối ưu hơn, nhưng cái này sẽ tùy thuộc vào độ am hiểu của lập trình viên về hệ quản trị đang dùng, chưa kể nếu ltv non tay mà viết raw querry sẽ dễ dẫn đến các lỗi sql injection, chưa kể nếu viết querry thuần sẽ dễ dẫn đến việc nếu đổi hệ quản trị là có khả năng xảy ra rất nhiều bug, nên người ta sinh ra trường phái viết code mà đẩy hết logic xử lý lên tầng application lun, xem hệ quản trị như nơi để lưu trữ thôi, thậm chí mấy khái niệm về chuẩn hay tham chiếu khóa đưa luôn lên tầng application cho nó handle luôn, ko còn viết procedure dưới hệ quản trị nữa
nếu bạn viết vậy thì làm sao làm đa ứng dụng được: giờ 1 hệ thống có web, có app desktop, app mobile. phải viết chugn phần lớp services. mà viết lên app thì data lớn làm sao xử lý dc về bộ nhớ và thuật toán sắp xếp bằng DB dc.
mình làm app có db tới hơn 10tr records và còn phải tính toán trước khi tạo 1 record nữa, tốc độ bị chậm vì ảnh hưởng ở cả 2 bước tính toán ra kq của record và lưu trữ record
@@phanmemchamcongHRADEnterprise nếu đi theo hướng này thì người ta sẽ tách thành nhiều service dạng microservice, mỗi service sẽ chỉ chuyên trách 1 nhóm chức năng nào đó nên db ko quá to đâu
Ở ví dụ cuối nếu chúng ta dùng với @Query custom ở các lib jdbc hay orm mà dùng với parameter là name or index? Thì nó có bị phân tích lại chiến lược thực thi không a nhỉ :)
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
anh cho em hỏi so với trường hợp anh đã tối ưu như trong video đem so sánh với trường hợp mà mình when IN (...) thì kết quả như nào anh nhi? Mong anh giải thích giúp.
Mình hỏi chút cái B1 ở câu lệnh thứ 2 nó được gán với giá trị của FOR i IN 1..100000 ở chỗ nào nhỉ? nếu nó không gán được thì mình thấy câu lệnh thứ 2 luôn luôn lấy 1 giá trị là B1
Cảm ơn anh em vì câu hỏi rất thú vị. Nếu giữ nguyên việc truyền giá trị (trường hợp 1 trong video), chúng ta chạy lần 2, lần 3 hoặc các lần sau đó nữa thì vẫn không tối ưu bằng so với việc sử dụng Biến (trường hợp 2 trong video) anh em nhé. Mình có những bài viết để anh em đọc bổ trợ liên quan phần tối ưu, anh em có thể tham gia nhóm này để đọc và cập nhật những bài viết của mình: wecommit.com.vn/zalogroup
Với các thủ tục có cách thức tiếp cận tương tự thôi anh em. Anh em có thể tham gia cộng đồng của mình và nêu các vướng mắc trong dự án thực tế, chúng ta cùng trao đổi trên đó thì sẽ giúp ích nhất cho anh em. Link tham gia cộng đồng: facebook.com/groups/1222038335162578
Trường hợp hợp 2 session khác nhau cùng thực thi cùng 1 câu lệnh, mình viết theo kiểu truyền biến :B1. Như vậy có tận dụng được execution plan không anh Huy?
@@tranquochuywecommit anh cho em hỏi thêm, có phải mình cứ viết script vào trong store procedure là execution plan được tận dụng không ạ? hay phải viết theo dạng chuỗi rồi execute immediate
Khi em search google với từ khóa "hard parse" kết quả tìm kiếm chỉ gợi ý kết quả tìm kiếm cho db Oracle, em đã thử "hard parse mySQL", "hard parse SQL Server" đều không có kết quả, liệu hard parse nó có đúng với mọi db. Em cảm ơn
anh ơi, cho e hỏi là nó check xem câu lệnh đã thực thi chưa thì nó sẽ kiểm tra câu lệnh đã dc thực thi hay chưa trong cùng 1 transaction hay nếu có cùng câu lệnh như vậy dc thực thi từ vài ngày trc nhưng xong tắt máy di và bật lại thì nó có coi câu lệnh đó đã dc thực thi r để nó bỏ qua bước hard parse cho câu lệnh thứ 2 không anh?
"tắt máy và bật lại" ý của em là tắt từ máy client hay là tắt máy của database server nhỉ. Bản chất nếu tắt từ database server thì tất cả phần bộ nhớ (chiến lược thực thi được lưu trên đó) sẽ bị xóa và phải phân tích lại từ đầu, sau khi bật database server lên. Còn việc tắt máy của client thì không ảnh hưởng gì cả. Lần sau em thực hiện thì nó bỏ qua bước hard parse.
@@tranquochuywecommit thanks anh nhiều ạ. Nhưng e vẫn còn thắc mắc nữa mong a giải đáp giúp e vs ạ. Nếu client lên tới vài triệu thì server nó cũng lưu trữ cả hàng triệu chiến lược trc đó ạ.
Gửi mọi người Group Telegream Wecommit Public Community : www.wecommit.com.vn/wecommitcommunity ,anh em có thể trao đổi những câu hỏi , vấn đề khi xem Video và kết nối với tôi trong Group nhé (trường hợp click trực tiếp bị lỗi thì ae copy link ra browser nhé)
Cảm ơn a nhiều. Kiến thức cực kì quan trọng cho ae làm backend
em làm Backend nên nhiều khi cũng chỉ nghĩ là do câu query của mình chưa tối ưu nên chậm mà xem xong video này đc mở mang tầm mắt hẳn
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
VD về set biến để tái sử dụng chiến lược thực thi hay quá ạ.
Thật sự rất cảm ơn chia sẻ của anh, những ae dev ít kinh nghiệm thì rất hiếm có cơ hội tìm tòi ra được kiến thức như thế này, vừa rồi em làm task update SQL để cải thiện performance nếu biết được điều này sớm có lẽ đã làm tốt hơn rồi. Cảm ơn a
hay quá anh ạ , giải thích chi tiết cặn kẽ dễ hiểu , thanks anh.
Anh giải thích hay quá, cảm ơn anh đã chia sẽ kiến thức với mọi người ạ, thanks anh.
cảm ơn anh đã chia sẻ ạ
Hay quá anh ơi, kiến thức rất bổ ích ạ
Quá xịn, quá xứng đáng để chia sẻ ạ
Cảm ơn em.
Video rất hay, cảm ơn anh vì đã chia sẻ !!
rõ ràng, dễ hiểu. Cảm ơn anh đã chia sẻ
quá tuyệt, triệu like cho anh. Mong anh ra thêm nhiều video nữa.
vẫn ra đều video anh em nhé. Anh em đăng ký kênh để nhận thông tin ngay khi có video mới nhá
Rất hay, xứng đáng like mạnh nhé mn
quá là hay, đó giờ em học về sql chủ yếu là cách dùng ko đi sâu được đến vậy. Cảm ơn anh nhiều.
Em đăng ký kênh để nhận các video phân tích chuyên sâu rât thú vị sắp tới nhé.
Cảm ơn em đã quan tâm và ủng hộ kênh của anh
hữu ích, cảm ơn chia sẻ của anh
video hay và cách anh diễn giải rất dễ hiểu, cám ơn anh nhiều :D mong anh ra thêm nhiều series hơn nữa
Ngoài video anh còn viết rất nhiều bài viết (có bài viết mới hàng tuần), em có thể vào nhóm này để cập nhật toàn bộ danh sách bài viết của anh nhé: wecommit.com.vn/zalogroup.
Video youtube thì anh cũng đăng đều đặn, em đăng ký kênh để nhận các video mới một cách nhanh nhất.
Anh cũng cảm ơn sự ghi nhận của em, những lời của em tiếp thêm động lực cho anh :)
Hay quá, cảm ơn anh nhiều
Quá đỉnh, thực tiễn và dễ hiểu 👏
Cảm ơn anh em.
Video hay … nhưng giờ hầu hết các web framework sẽ lo phần này rồi, các dev cũng đỡ bận tâm … nhưng mấy thánh dev tool dựa vào database của app khác thì nên quan tâm.
rất tâm huyết. 1 like
Hay quá luôn anh! Được mở mang tầm mắt!!
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
Em cảm ơn anh đã chia sẻ kiến thức bổ ích ạ :D
Hy vọng anh sẽ ra thêm nhiều video tuyệt vời như vậy nữa ^^
Hay quá ạ, em cảm ơn anh nhiều ạ
Tuyệt.vời quá a ạ
Anh có bài hướng dẫn nào liên quan đến tạo một máy chủ phụ từ máy chủ chính và chạy song song không ạ?
quá hay anh êi
Rất hay
ap dụng giải thuật này trong select để transform data đc ko a ?
Hay quá a
a cho em hỏi, nếu là viết trong procedure có truyền biến từ webserver lên, xử lý logic sẽ sử dụng các biến đó, thì TH này có đươc hiểu đúng như chiến lược anh chỉ không anh nhỉ
theo kiến thức hạn hẹp của mình thì
bth mọi người viết ứng dụng sẽ có các framework orm giúp gen querry nên nó sẽ ko tối ưu, còn được viết trực tiếp raw querry thế này thì sẽ tối ưu hơn, nhưng cái này sẽ tùy thuộc vào độ am hiểu của lập trình viên về hệ quản trị đang dùng, chưa kể nếu ltv non tay mà viết raw querry sẽ dễ dẫn đến các lỗi sql injection, chưa kể nếu viết querry thuần sẽ dễ dẫn đến việc nếu đổi hệ quản trị là có khả năng xảy ra rất nhiều bug, nên người ta sinh ra trường phái viết code mà đẩy hết logic xử lý lên tầng application lun, xem hệ quản trị như nơi để lưu trữ thôi, thậm chí mấy khái niệm về chuẩn hay tham chiếu khóa đưa luôn lên tầng application cho nó handle luôn, ko còn viết procedure dưới hệ quản trị nữa
Mình cũng có những buổi phân tích với doanh nghiệp về lợi và hại khi đẩy hết việc xử lý logic lên tầng app xử lý.
nếu bạn viết vậy thì làm sao làm đa ứng dụng được: giờ 1 hệ thống có web, có app desktop, app mobile. phải viết chugn phần lớp services. mà viết lên app thì data lớn làm sao xử lý dc về bộ nhớ và thuật toán sắp xếp bằng DB dc.
mình làm app có db tới hơn 10tr records và còn phải tính toán trước khi tạo 1 record nữa, tốc độ bị chậm vì ảnh hưởng ở cả 2 bước tính toán ra kq của record và lưu trữ record
@@phanmemchamcongHRADEnterprise nếu đi theo hướng này thì người ta sẽ tách thành nhiều service dạng microservice, mỗi service sẽ chỉ chuyên trách 1 nhóm chức năng nào đó nên db ko quá to đâu
Ở ví dụ cuối nếu chúng ta dùng với @Query custom ở các lib jdbc hay orm mà dùng với parameter là name or index? Thì nó có bị phân tích lại chiến lược thực thi không a nhỉ :)
quá hay
Rất hay. Thank bạn.
Mình còn rất nhiều bài viết phân tích khác (không chỉ video), anh em có thể tham gia nhóm Zalo này để đọc thêm những phân tích về tối ưu SQL nhé: wecommit.com.vn/zalogroup
anh cho em hỏi so với trường hợp anh đã tối ưu như trong video đem so sánh với trường hợp mà mình when IN (...) thì kết quả như nào anh nhi? Mong anh giải thích giúp.
anh vừa đẹp trai lại nói chuyện dễ hiểu nữa, em chỉ được 50% của anh, em được vế 1 :'(
cảm ơn sự ủng hộ của anh em nhé.
hay qua anh oi
Cảm ơn anh em. Anh em có thể tìm đọc thêm cả các bài viết của mình trên wecommit.com.vn nhé
xin hỏi làm sao import file txt vào SQL server ? xin cám ơn.
Mình hỏi chút cái B1 ở câu lệnh thứ 2 nó được gán với giá trị của FOR i IN 1..100000 ở chỗ nào nhỉ? nếu nó không gán được thì mình thấy câu lệnh thứ 2 luôn luôn lấy 1 giá trị là B1
cùng câu hỏi
Nhờ bác chạy lại và phân tích thêm trong trường hợp 1 nếu chạy lại lần 2, lần 3 => lúc này execute plan đã có thì có chậm hơn trường hợp 2 không?
Cảm ơn anh em vì câu hỏi rất thú vị.
Nếu giữ nguyên việc truyền giá trị (trường hợp 1 trong video), chúng ta chạy lần 2, lần 3 hoặc các lần sau đó nữa thì vẫn không tối ưu bằng so với việc sử dụng Biến (trường hợp 2 trong video) anh em nhé.
Mình có những bài viết để anh em đọc bổ trợ liên quan phần tối ưu, anh em có thể tham gia nhóm này để đọc và cập nhật những bài viết của mình: wecommit.com.vn/zalogroup
Anh có thể hướng dẫn check với Stored Procedure không ạ. Vì trong sp xử lý khá nhiều với bảng temp nên em không biết nên check như nào ạ, thank anh !
Với các thủ tục có cách thức tiếp cận tương tự thôi anh em. Anh em có thể tham gia cộng đồng của mình và nêu các vướng mắc trong dự án thực tế, chúng ta cùng trao đổi trên đó thì sẽ giúp ích nhất cho anh em.
Link tham gia cộng đồng: facebook.com/groups/1222038335162578
hay
cảm ơn anh em
Video hay, nhưng OK hơi nhiều =))
Trường hợp hợp 2 session khác nhau cùng thực thi cùng 1 câu lệnh, mình viết theo kiểu truyền biến :B1. Như vậy có tận dụng được execution plan không anh Huy?
Hai session khác nhau vẫn tái sử dụng execution plan bình thường anh em nhé.
@@tranquochuywecommit anh cho em hỏi thêm, có phải mình cứ viết script vào trong store procedure là execution plan được tận dụng không ạ?
hay phải viết theo dạng chuỗi rồi execute immediate
hiểu cứng nhắc thế thì lại không đúng anh em nhé
@@tranquochuywecommit vâng, cảm ơn anh đã chia sẻ
anh làm nguyên khóa sql cơ bản đến nâng cao đi ạ
Anh có đấy, từ cơ bản đến nâng cao và kinh nghiệm làm dự án.
@@tranquochuywecommit cho em xin thông tin ạ
@@thompham8903 wecommit.com.vn/chuong-trinh-dao-tao-quan-tri-co-so-du-lieu-tu-tin-lam-chu-100-cong-viec/ đây nhé anh em
Khi em search google với từ khóa "hard parse" kết quả tìm kiếm chỉ gợi ý kết quả tìm kiếm cho db Oracle, em đã thử "hard parse mySQL", "hard parse SQL Server" đều không có kết quả, liệu hard parse nó có đúng với mọi db. Em cảm ơn
Nguyên lý giống nhau cả em ah.
Cái này có vẻ không đúng với postgre ạ. E đã thử 100.000 bản ghi với postgre mà không thấy sự khác nhau gì cả
anh ơi, cho e hỏi là nó check xem câu lệnh đã thực thi chưa thì nó sẽ kiểm tra câu lệnh đã dc thực thi hay chưa trong cùng 1 transaction hay nếu có cùng câu lệnh như vậy dc thực thi từ vài ngày trc nhưng xong tắt máy di và bật lại thì nó có coi câu lệnh đó đã dc thực thi r để nó bỏ qua bước hard parse cho câu lệnh thứ 2 không anh?
"tắt máy và bật lại" ý của em là tắt từ máy client hay là tắt máy của database server nhỉ.
Bản chất nếu tắt từ database server thì tất cả phần bộ nhớ (chiến lược thực thi được lưu trên đó) sẽ bị xóa và phải phân tích lại từ đầu, sau khi bật database server lên.
Còn việc tắt máy của client thì không ảnh hưởng gì cả. Lần sau em thực hiện thì nó bỏ qua bước hard parse.
@@tranquochuywecommit thanks anh nhiều ạ. Nhưng e vẫn còn thắc mắc nữa mong a giải đáp giúp e vs ạ. Nếu client lên tới vài triệu thì server nó cũng lưu trữ cả hàng triệu chiến lược trc đó ạ.
@@nguyenhoanganh2k1 ừ đúng câu hỏi thú vị.
1