2010-05-26 32 views
11

Tôi đã sử dụng MySQL trong nhiều năm, chủ yếu là các dự án nhỏ hơn cho đến năm ngoái. Tôi không chắc liệu đó là bản chất của ngôn ngữ hay thiếu các hướng dẫn thực sự mang lại cho tôi cảm giác không chắc chắn liệu những gì tôi viết là cách thích hợp cho các mục đích tối ưu hóa và mục đích nhân rộng.Cách nhanh nhất để trở thành chuyên gia MySQL?

Trong khi tự học PHP tôi rất chắc chắn về bản thân và mã tôi viết, dễ dàng có thể so sánh nó với người khác, v.v.

Với MySQL, tôi không chắc liệu (và trong trường hợp nào) một INNER JOIN hoặc LEFT JOIN nên được sử dụng, cũng như tôi không biết số lượng lớn các chức năng mà nó có. Trong khi tôi đã viết mã cho các cơ sở dữ liệu xử lý hàng chục triệu bản ghi, tôi không biết liệu nó có tối ưu hay không. Tôi thường thấy rằng một tinh chỉnh nhỏ sẽ khiến truy vấn mất ít hơn 1/10 thời gian ban đầu ... nhưng làm cách nào để biết rằng truy vấn hiện tại của tôi cũng không chậm?

Tôi muốn trở nên hoàn toàn tự tin trong lĩnh vực này trong khả năng tối ưu hóa cơ sở dữ liệu và có thể mở rộng. Sử dụng không phải là vấn đề - tôi sử dụng nó hàng ngày theo nhiều cách khác nhau.

Vì vậy, câu hỏi là, con đường là gì? Đọc một cuốn sách? Trang web/hướng dẫn? Khuyến nghị?

+0

FWIW, ngoài việc tối ưu hóa đặc thù cho MySQL, bạn đã mô tả SQL chung. Nếu bạn gặp khó khăn khi tìm hướng dẫn hoặc hướng dẫn, có lẽ đó là vì bạn đang cố gắng tìm kiếm quá hẹp? –

+0

Bạn thấy đấy, tôi sẽ nói SQL, nhưng tôi đã luôn luôn chạy vào thực tế là mọi người nhấn mạnh rằng SQL là một chút khác nhau, mạnh mẽ hơn, các tính năng khác. Tôi vui vì bạn đang nói như vậy ở đây. –

Trả lời

4

EXPLAIN là bạn của bạn. Nếu bạn học cách sử dụng công cụ này, bạn sẽ có thể tối ưu hóa các truy vấn của bạn rất hiệu quả.

  • Quét sách hướng dẫn MySQL và đọc cuốn sách MySQL của Paul DuBois '.
  • Sử dụng GIẢI THÍCH CHỌN, HIỂN THỊ BIẾN, HIỂN THỊ TÌNH TRẠNG và HIỂN THỊ THỦ TỤC.
  • Tìm hiểu cách trình tối ưu hóa truy vấn hoạt động.
  • Tối ưu hóa định dạng bảng của bạn.
  • Duy trì các bảng của bạn (myisamchk, CHECK TABLE, OPTIMIZE TABLE).
  • Sử dụng tiện ích mở rộng MySQL để hoàn thành công việc nhanh hơn.
  • Viết chức năng MySQL UDF nếu bạn nhận thấy rằng bạn sẽ cần một số chức năng ở nhiều nơi.
  • Không sử dụng GRANT ở cấp độ bảng hoặc cấp cột nếu bạn không thực sự cần .

http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/index.html

5

Chỉ cách cách để trở thành chuyên gia về điều gì đó là trải nghiệm và thường mất thời gian. Và một người cố vấn giỏi tốt hơn bạn để dạy bạn những gì bạn đang bỏ lỡ. Vấn đề là bạn không biết những gì bạn không biết.

+0

Quyền - Tôi đồng ý, tôi đã dành 3 1/2 năm lập trình toàn thời gian, và tôi cảm thấy một chuyên gia trong nhiều lĩnh vực khác, một số trong đó tôi đã dành ít thời gian hơn với MySQL. Tôi muốn thực hiện bước tiếp theo. –

1

Tôi không biết nếu MIT Open Courseware có bất cứ điều gì về cơ sở dữ liệu ... Vâng whaddya biết? Họ thực hiện: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-830Fall-2005/CourseHome/

Tôi khuyên bạn nên dùng làm nguồn duy nhất dựa trên danh tiếng của MIT. Nếu bạn có thể tham gia một khóa học chính thức từ một trường đại học, bạn có thể thấy điều đó hữu ích. Ngoài ra một sự hiểu biết tốt về toán học/logic rời rạc cơ bản chắc chắn sẽ không gây hại.

2

Nghiên cứu và trải nghiệm - nếu bạn không có dự án nào để đảm bảo nghiên cứu, hãy thực hiện chúng. Tạo ba bảng với dữ liệu liên quan và tạo nên các kịch bản.

Ví dụ:

Thực hiện một bảng của phim dữ liệu của họ

làm một bảng của người dùng

tạo ra một bảng xếp hạng cho người dùng

thời gian chi tiêu học cách tham gia công việc, làm thế nào để có được những bộ phim của một đánh giá đặc biệt trong một truy vấn, làm thế nào để tìm kiếm các bảng phim (như, regex) - như đã đề cập, sử dụng giải thích để xem những thứ khác nhau ảnh hưởng đến tốc độ như thế nào. Làm cho một ngày của nó; Tôi đảm bảo xử lý của bạn trên nó sẽ được tăng lên rất nhiều.

Nếu bạn vẫn đang đấu tranh cho các tình huống, hãy bắt đầu xem xét SO về các câu hỏi và tự mình thử các kịch bản đó.

+1

Cấp độ nâng cao - xem người dùng nào có sở thích tương tự nhất khi xếp hạng phim. Mặc dù điều đó có thể phải được thực hiện trong một proc được lưu trữ hoặc PHP. –

1

Như những người khác đã nói, thời gian và thực hành là cách tiếp cận thực sự duy nhất.

Thực tế hơn, tôi thấy rằng EXPLAIN đã làm việc kỳ diệu cho cá nhân tôi. Học để đọc đầu ra của đó có lẽ là bước nhảy vọt lớn nhất mà tôi tạo ra khi có thể viết các truy vấn hiệu quả.

Điều thứ hai tôi thấy thực sự hữu ích là SQL Tuning by Dan Tow, mô tả phương pháp khá chính thức để trích xuất hiệu suất. Đó là một chút tham gia, nhưng hoạt động tốt trong nhiều tình huống. Và nếu không có gì khác, nó sẽ cung cấp cho bạn một sự hiểu biết tốt hơn về cách tham gia được xử lý.

0

Bắt đầu với một lớp học như thế này: https://www.udemy.com/sql-mysql-databases/

Sau đó, sử dụng những gì bạn đã học được để tạo và quản lý một số cơ sở dữ liệu SQL và chạy các truy vấn. Đến cấp độ chuyên gia thực sự là về thực hành. Nhưng tất nhiên bạn cần phải tìm hiểu các mảnh trước khi bạn có thể thực hành.

Các vấn đề liên quan