Chia sẻ con trỏ là (hoặc là) một lợi thế lớn so với đối thủ cạnh tranh. Về cơ bản, cùng một kế hoạch truy vấn được sử dụng cho các truy vấn phù hợp. Một ứng dụng sẽ có một tập hợp các truy vấn chuẩn mà nó phát hành (ví dụ lấy các đơn đặt hàng cho id khách hàng này). Cách đơn giản là xử lý mọi truy vấn một cách riêng lẻ, vì vậy nếu bạn thấy 'CHỌN * TỪ ĐƠN HÀNG CÓ CUSTOMER_ID =: b1', bạn xem liệu bảng ORDERS có chỉ mục trên CUSTOMER_ID vv. Kết quả là, bạn có thể dành nhiều công sức tìm kiếm lập siêu dữ liệu để có được một kế hoạch truy vấn khi thực sự truy xuất dữ liệu. Với tra cứu khóa đơn giản, một kế hoạch truy vấn rất dễ dàng. Truy vấn phức tạp với nhiều bảng được nối trên các cột bị lệch sẽ khó hơn.
Oracle có bộ nhớ cache của các kế hoạch truy vấn và các gói cũ hơn/ít được sử dụng hơn là những gói mới cần thiết.
Nếu bạn không lưu trữ kế hoạch truy vấn, có giới hạn về mức độ thông minh mà bạn có thể làm cho trình tối ưu hóa của bạn càng thông minh hơn, bạn càng có tác động lớn lên mỗi truy vấn được xử lý. Truy vấn lưu vào bộ nhớ đệm nghĩa là bạn chỉ phải chịu phí trên đầu tiên khi bạn nhìn thấy truy vấn.
'Nhược điểm' là để chia sẻ con trỏ có hiệu quả, bạn cần sử dụng các biến liên kết. Một số lập trình viên không nhận ra điều đó và viết mã không được chia sẻ và sau đó phàn nàn rằng Oracle không nhanh như mySQL.
Một ưu điểm khác của Oracle là nhật ký UNDO. Khi thay đổi được thực hiện, 'phiên bản cũ' của dữ liệu được ghi vào một bản ghi hoàn tác. Cơ sở dữ liệu khác giữ các phiên bản cũ của bản ghi trong cùng một vị trí như bản ghi. Điều này đòi hỏi các hoạt động dọn dẹp kiểu VACUUM hoặc bạn gặp phải vấn đề về không gian và tổ chức. Điều này là có liên quan nhất trong cơ sở dữ liệu với cập nhật cao hoặc xóa hoạt động.
Ngoài ra, Oracle không có khóa đăng ký khóa trung tâm. Một bit khóa được lưu trữ trên mỗi bản ghi dữ liệu riêng lẻ. SELECT không có khóa. Trong cơ sở dữ liệu nơi SELECT khóa, bạn có thể có nhiều người dùng đọc dữ liệu và khóa lẫn nhau hoặc ngăn chặn các bản cập nhật, giới thiệu khả năng mở rộng giới hạn. Cơ sở dữ liệu khác sẽ khóa một bản ghi khi một SELECT được thực hiện để đảm bảo rằng không ai khác có thể thay đổi mục dữ liệu đó (vì vậy nó sẽ nhất quán nếu cùng một truy vấn hoặc giao dịch nhìn lại bảng).Oracle sử dụng UNDO cho mô hình nhất quán đã đọc của nó (tức là tìm kiếm dữ liệu khi nó xuất hiện tại một thời điểm cụ thể).
Nguồn
2010-01-25 11:53:17