Thứ Hai, 17 tháng 6, 2019

BÍ QUYẾT TỐI ƯU CẤU TRÚC CƠ SỞ DỮ LIỆU ORACLE

1. Mục đích

  • Tối ưu cấu trúc bảng, index, partition.
  • Tối ưu câu lệnh truy vấn và tác động của Database
  • Tối ưu việc xử dụng tài nguyên của Database
  • Đảm bảo database hoạt động ổn định
  • Thống nhất phương án thiết kế Database và tác động Database

2. Nội dung

Cấu trúc bảng: Khi tạo 1 bảng mới cần áp dụng các phương án như sau
  • Với bảng có dữ liệu lớn (2G trở lên) phải đánh partition
    • Với dữ liệu lịch sử thì đánh theo By Range
    • Với dữ liệu xác định trước được giá trị thì đánh theo By list
    • Với dữ liệu không có quy luật thì đánh theo By Hash
  • Với các bảng có đánh partition thì index phải đánh theo Local
  • Hạn chế sử dụng trigger trên bảng
  • Đánh giá trong câu lệnh select có trường nào xác định được đối tượng tìm kiếm chính xác nhất và có độ dài trường ngắn nhất(ưu tiên trường number) thì đánh index theo trường đó
  • Hạn chế dùng foreign key
  • Với các bảng có tần suất update hoặc insert lớn không nên dùng primary key

Câu lệnh tác động: Khi viết câu lệnh tác động vào bảng cần theo hướng dẫn sau
  • Tất cả các câu lệnh đều phải có index, không câu lệnh nào được quét full bảng
  • Nếu bảng có partition thì trong câu lệnh phải có thêm trường partition, ngoại trừ 1 số trường hợp đặc biệt
  • Khi joint 2 bảng với nhau thì bảng có dữ liệu lớn hơn phải có index
  • Trong câu lệnh không dùng điều kiện is null, cần chuyển sang phương án dùng các toán tử : >, < = ….
  • Hạn chế sử dụng câu lệnh delete, cần chuyển sang câu lệnh truncate
  • Hạn chế sử dụng câu lệnh update, cần chuyển sang câu lệnh inert và select
  • Với các bảng tmp có dữ liệu trong quá trình chạy và xóa dữ liệu sau khi chạy(không cần backup dữ liệu) cần chuyển bảng sang nologging và câu lệnh insert cần có thêm append

Câu lệnh tạo View: Các lưu ý khi tạo view
  • Trong view không nên trường mới vì khi câu lệnh select vào view có thể sẽ bị quét full bảng.
  • Hạn chế sử dụng view lồng nhau

Tạo tablespace: với mỗi Database thường tạo các loại tablespace như sau
  • Loại tablespace cố định : để lưu defaule các user ứng dụng, các bảng không có partition, VD : DATA
  • Loại tablespace không cố định : lưu các bảng có partition, vd DATAYYYYMM
  • Loại tablespace cho người dùng : lưu các bảng của người dùng trực tiếp CSDL tạo ra, vd NGHIEPVU
  • Loại tablespace tmp : lưu các bảng tmp, các bảng không cần backup, vd TMP

#tối_ưu_cấu_trúc_cơ_sở_dữ_liệu_oracle #tối_ưu_oracle #oracle_tunning




ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master