PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Con trỏ với postgres, dữ liệu được lưu trữ ở đâu và có bao nhiêu lệnh gọi tới DB

Tập dữ liệu cho một con trỏ được máy chủ chuẩn bị tại thời điểm thực hiện FETCH đầu tiên. Ứng dụng khách chỉ nhận được kết quả của các câu lệnh FETCH tiếp theo.

Nếu máy chủ không thể sử dụng các chỉ mục để duy trì con trỏ, thì tập dữ liệu tạm thời sẽ được tạo. Bạn có thể thực hiện kiểm tra đơn giản này:

create table test(i int, v text);
insert into test
select i, i::text
from generate_series(1, 5000000) i;

Thực thi từng câu lệnh trong tập lệnh này:

begin;

declare cur cursor 
for select * from test
order by random();             -- 17 ms

fetch next cur;                -- 37294 ms (*)

fetch next cur;                -- 0 ms
fetch prior cur;               -- 0 ms
fetch absolute 1000000 cur;    -- 181 ms
fetch relative 1000000 cur;    -- 163 ms
fetch first cur;               -- 0 ms
fetch last cur;                -- 0 ms

rollback;

First FETCH (*) thực hiện gần như cùng lúc với việc tạo một bảng tạm thời tương tự:

create temp table temp_test as
select * from test
order by random();             -- 51684 ms

Một số trình điều khiển có thể có triển khai con trỏ của riêng họ ở phía máy khách. Điều này phải được mô tả rõ ràng trong tài liệu của người lái xe.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sail.js nhiều kết nối khi bắt đầu

  2. Làm thế nào để cài đặt luasql trên Linux CentOS 7?

  3. Nhận tất cả các khóa ngoại bằng JDBC

  4. NodeJS – Thêm mảng chuỗi trong truy vấn PostgreSQL

  5. Rails Activerecord Relation:sử dụng truy vấn con làm bảng cho câu lệnh SQL select