2009-05-08 76 views
5

Khi sử dụng MySQL 5.1 Enterprise sau nhiều năm sử dụng các sản phẩm cơ sở dữ liệu khác như Sybase, Infomix, DB2; Tôi chạy vào những thứ mà MySQL không làm. Ví dụ, nó chỉ có thể tạo ra một kế hoạch truy vấn EXPLAIN cho các truy vấn SELECT.Các giới hạn của MySQL

Điều gì khác tôi nên chú ý?

+1

Từ được in nghiêng 'thực tế' sẽ khiến câu hỏi này bị đóng là chủ quan và tranh luận, tất cả đều do chính nó. – chaos

+0

ok, đã thay đổi * real * thành mã nguồn đóng –

+0

Tôi muốn đề xuất xóa toàn bộ cụm từ đó. "năm sử dụng các sản phẩm cơ sở dữ liệu như ..." –

Trả lời

4

Tham gia đầy đủ bên ngoài. Nhưng bạn vẫn có thể thực hiện phép nối ngoài bên ngoài bên ngoài bên phải.

7

Bạn có thể có một cái nhìn vào danh sách dài ở đây: MySQL Gotchas

+0

Danh sách tốt, nhưng nó có thể không chính xác 100% đối với MySQL 5.0. –

+0

đúng, tôi đã làm rõ phiên bản mysql ở trên –

1

Cho phép Vai trò hoặc Nhóm

1

Nó không tốn rất nhiều tiền. Hãy thử xây dựng một trang web nhóm trên nhiều máy với nhiều lõi trên một cơ sở dữ liệu oracle. ouch.

1

Nó vẫn không thực hiện các ràng buộc CHECK!

2

Một điều tôi đã gặp phải trong một dự án trễ là các loại ngày của MySQL không thể lưu trữ mili giây. Thời gian biểu và dấu thời gian chỉ giải quyết thành giây! Tôi không thể nhớ chính xác hoàn cảnh mà điều này đã đưa ra nhưng tôi đã cần phải lưu trữ một int có thể được chuyển đổi thành một ngày (hoàn thành với mili giây) trong mã của tôi.

Trình điều khiển JDBC của trình điều khiển JDBC kết quả bộ nhớ cache theo mặc định, đến mức nó sẽ khiến chương trình của bạn hết bộ nhớ (ném lên ngoại lệ OutOfMemory). Bạn có thể tắt nó đi, nhưng bạn phải làm điều đó bằng cách thông qua một số thông số khác thường vào báo cáo kết quả khi bạn tạo ra nó:

Statement sx = c.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY); 
sx.setFetchSize(Integer.MIN_VALUE); 

Nếu bạn làm điều đó, trình điều khiển JDBC sẽ không kết quả trong bộ nhớ cache, và bạn có thể thực hiện các truy vấn lớn NHƯNG nếu bạn đang sử dụng hệ thống ORM thì sao? Bạn không tự tạo các câu lệnh và do đó bạn không thể chuyển bộ nhớ đệm. Mà về cơ bản có nghĩa là bạn đang hoàn toàn hơi say nếu bạn là hệ thống ORM đang cố gắng để làm một cái gì đó liên quan đến rất nhiều hồ sơ.

Nếu chúng có ý nghĩa nào đó, chúng sẽ làm cho cấu hình đó có thể định cấu hình được bằng URL JDBC. Oh well.

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