2010-01-24 14 views
9

Oracle dường như có uy tín về khả năng mở rộng hơn các RDBMS khác. Sau khi làm việc với nó một chút, tôi có thể nói rằng nó phức tạp hơn các RDBMS khác, nhưng tôi đã không thực sự thấy bất cứ điều gì làm cho nó thêm khả năng mở rộng hơn các RDBMS khác. Nhưng sau đó một lần nữa, tôi đã không thực sự làm việc trên nó trong một toàn bộ rất nhiều chiều sâu.Điều gì làm cho Oracle dễ mở rộng hơn?

Oracle có tính năng nào có khả năng mở rộng hơn?

Trả lời

4

Kiến trúc RAC của Oracle là những gì làm cho nó có thể mở rộng nơi có thể cân bằng tải trên các nút và truy vấn song song có thể được chia nhỏ và được đẩy tới các nút khác để xử lý.

Một số thủ thuật như tải khối từ bộ đệm đệm của nút khác thay vì chuyển sang đĩa làm cho hiệu suất có khả năng mở rộng hơn nhiều.

Ngoài ra, khả năng bảo trì của RAC với nâng cấp lăn giúp làm cho hoạt động của hệ thống lớn trở nên lành mạnh hơn.

Ngoài ra còn có một khía cạnh khác về khả năng mở rộng - khả năng mở rộng bộ nhớ. ASM giúp tăng dung lượng lưu trữ rất đơn giản. Một giải pháp dựa trên ASM được thiết kế tốt, nên quy mô vượt qua 100s của kích thước terabyte mà không cần phải làm bất cứ điều gì rất đặc biệt.

Liệu những điều này làm cho Oracle có khả năng mở rộng hơn các RDBMS khác, tôi không biết. Nhưng tôi nghĩ rằng tôi sẽ cảm thấy ít hạnh phúc hơn khi cố gắng mở rộng cơ sở dữ liệu không phải của Oracle.

4

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ể).

2

"Kiến trúc cơ sở dữ liệu Oracle chuyên gia" của Tom Kyte từ Apress thực hiện tốt công việc mô tả kiến ​​trúc của Oracle, với một số so sánh với các rDBMS khác. Đáng đọc.