Operator uner

Operator unary memiliki satu turunan relasional.

Operator berikut adalah operator unary:

Skema database

Kueri dan rencana eksekusi di halaman ini didasarkan pada skema database berikut:

CREATE TABLE Singers (
  SingerId   INT64 NOT NULL,
  FirstName  STRING(1024),
  LastName   STRING(1024),
  SingerInfo BYTES(MAX),
  BirthDate  DATE
) PRIMARY KEY(SingerId);

CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName);

CREATE TABLE Albums (
  SingerId        INT64 NOT NULL,
  AlbumId         INT64 NOT NULL,
  AlbumTitle      STRING(MAX),
  MarketingBudget INT64
) PRIMARY KEY(SingerId, AlbumId),
  INTERLEAVE IN PARENT Singers ON DELETE CASCADE;

CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle);

CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) STORING (MarketingBudget);

CREATE TABLE Songs (
  SingerId  INT64 NOT NULL,
  AlbumId   INT64 NOT NULL,
  TrackId   INT64 NOT NULL,
  SongName  STRING(MAX),
  Duration  INT64,
  SongGenre STRING(25)
) PRIMARY KEY(SingerId, AlbumId, TrackId),
  INTERLEAVE IN PARENT Albums ON DELETE CASCADE;

CREATE INDEX SongsBySingerAlbumSongNameDesc ON Songs(SingerId, AlbumId, SongName DESC), INTERLEAVE IN Albums;

CREATE INDEX SongsBySongName ON Songs(SongName);

CREATE TABLE Concerts (
  VenueId      INT64 NOT NULL,
  SingerId     INT64 NOT NULL,
  ConcertDate  DATE NOT NULL,
  BeginTime    TIMESTAMP,
  EndTime      TIMESTAMP,
  TicketPrices ARRAY<INT64>
) PRIMARY KEY(VenueId, SingerId, ConcertDate);

Anda dapat menggunakan pernyataan Bahasa Manipulasi Data (DML) berikut untuk menambahkan data ke tabel ini:

INSERT INTO Singers (SingerId, FirstName, LastName, BirthDate)
VALUES (1, "Marc", "Richards", "1970-09-03"),
       (2, "Catalina", "Smith", "1990-08-17"),
       (3, "Alice", "Trentor", "1991-10-02"),
       (4, "Lea", "Martin", "1991-11-09"),
       (5, "David", "Lomond", "1977-01-29");

INSERT INTO Albums (SingerId, AlbumId, AlbumTitle)
VALUES (1, 1, "Total Junk"),
       (1, 2, "Go, Go, Go"),
       (2, 1, "Green"),
       (2, 2, "Forever Hold Your Peace"),
       (2, 3, "Terrified"),
       (3, 1, "Nothing To Do With Me"),
       (4, 1, "Play");

INSERT INTO Songs (SingerId, AlbumId, TrackId, SongName, Duration, SongGenre)
VALUES (2, 1, 1, "Let's Get Back Together", 182, "COUNTRY"),
       (2, 1, 2, "Starting Again", 156, "ROCK"),
       (2, 1, 3, "I Knew You Were Magic", 294, "BLUES"),
       (2, 1, 4, "42", 185, "CLASSICAL"),
       (2, 1, 5, "Blue", 238, "BLUES"),
       (2, 1, 6, "Nothing Is The Same", 303, "BLUES"),
       (2, 1, 7, "The Second Time", 255, "ROCK"),
       (2, 3, 1, "Fight Story", 194, "ROCK"),
       (3, 1, 1, "Not About The Guitar", 278, "BLUES");

Agregat

Operator agregat menerapkan pernyataan SQL GROUP BY dan fungsi agregat (seperti COUNT). Input untuk operator agregat secara logis dipartisi ke dalam grup yang disusun pada kolom kunci (atau ke dalam satu grup jika GROUP BY tidak ada). Untuk setiap grup, nol atau lebih agregat dihitung.

Kueri berikut menunjukkan operator ini:

SELECT s.singerid,
       Avg(s.duration) AS average,
       Count(*)        AS count
FROM   songs AS s
GROUP  BY singerid;

/*----------+---------+-------+
 | SingerId | average | count |
 +----------+---------+-------+
 |        3 | 278     |     1 |
 |        2 | 225.875 |     8 |
 +----------+---------+-------*/

Kueri dikelompokkan menurut SingerId dan melakukan agregasi AVG dan agregasi COUNT.

Segmen rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator agregasi

Operator agregat dapat berupa berbasis streaming atau berbasis hash. Rencana eksekusi sebelumnya menunjukkan agregat berbasis streaming. Agregat berbasis streaming dibaca dari input yang telah diurutkan sebelumnya (jika GROUP BY ada) dan menghitung grup tanpa pemblokiran. Agregat berbasis hash membuat tabel hash untuk mempertahankan agregat inkremental dari beberapa baris input secara bersamaan. Agregat berbasis streaming lebih cepat dan menggunakan lebih sedikit memori daripada agregat berbasis hash, tetapi memerlukan input yang diurutkan (berdasarkan kolom kunci atau indeks sekunder).

Untuk skenario terdistribusi, operator agregat dibagi menjadi pasangan lokal-global. Setiap server jarak jauh melakukan agregasi lokal pada baris input-nya, lalu menampilkan hasilnya ke server root. Server root melakukan agregasi global.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Properti

Nama Deskripsi
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Menerapkan mutasi

Operator apply mutations menerapkan mutasi dari pernyataan Bahasa Pengolahan Data (DML) ke tabel. Operator ini adalah operator teratas dalam rencana kueri untuk pernyataan DML.

Kueri berikut menunjukkan operator ini:

DELETE FROM singers
WHERE  firstname = 'Alice';

/*
4 rows deleted  This statement deleted 4 rows and did not return any rows.
*/

Rencana eksekusi akan muncul sebagai berikut:

Menerapkan rencana eksekusi operator mutasi

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Properti

Nama Deskripsi
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Buat batch

Operator buat batch mengelompokkan baris inputnya ke dalam urutan. Operasi batch pembuatan biasanya terjadi sebagai bagian dari operasi penerapan silang terdistribusi. Baris input dapat diurutkan ulang selama pengelompokan. Jumlah baris input yang dikelompokkan dalam setiap eksekusi operator batch bervariasi.

Lihat operator distributed cross apply untuk mengetahui contoh operator batch buat dalam rencana eksekusi.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Properti

Nama Deskripsi
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Compute

Operator compute menghasilkan output dengan membaca baris inputnya dan menambahkan satu atau beberapa kolom tambahan yang dihitung menggunakan ekspresi skalar. Lihat operator union all untuk contoh operator komputasi dalam paket eksekusi.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Properti

Nama Deskripsi
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Struktur komputasi

Operator compute struct membuat variabel untuk struktur yang berisi kolom untuk setiap kolom input.

Kueri berikut menunjukkan operator ini:

SELECT FirstName,
       ARRAY(SELECT AS STRUCT song.SongName, song.SongGenre
             FROM Songs AS song
             WHERE song.SingerId = singer.SingerId)
FROM singers AS singer
WHERE singer.SingerId = 3;

/*-----------+------------------------------------------------------+
 | FirstName | Unspecified                                          |
 +-----------+------------------------------------------------------+
 | Alice     | [["Not About The Guitar","BLUES"]]                   |
 +-----------+------------------------------------------------------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator struct komputasi

Dalam rencana eksekusi, operator subkueri array menerima input dari operator struktur komputasi. Operator struct compute membuat struktur dari kolom SongName dan SongGenre dalam tabel Songs.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Properti

Nama Deskripsi
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Filter

Operator filter membaca semua baris dari inputnya, menerapkan predikat skalar pada setiap baris, lalu hanya menampilkan baris yang memenuhi predikat.

Kueri berikut menunjukkan operator ini:

SELECT s.lastname
FROM   (SELECT s.lastname
        FROM   singers AS s
        LIMIT  3) s
WHERE  s.lastname LIKE 'Rich%';

/*----------+
 | LastName |
 +----------+
 | Richards |
 +----------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator filter

Spanner mengimplementasikan predikat untuk penyanyi yang nama belakangnya diawali dengan Rich sebagai filter. Filter menerima input dari scan indeks dan menampilkan baris yang LastName-nya dimulai dengan Rich.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Batas

Operator limit membatasi jumlah baris yang ditampilkan. Parameter OFFSET opsional menentukan baris awal yang akan ditampilkan. Dalam skenario terdistribusi, operator batas dibagi menjadi pasangan lokal-global. Setiap server jarak jauh menerapkan batas lokal untuk baris output-nya, lalu menampilkan hasilnya ke server root. Server root menggabungkan baris yang dikirim oleh server jarak jauh, lalu menerapkan batas global.

Kueri berikut menunjukkan operator ini:

SELECT s.songname
FROM   songs AS s
LIMIT  3;

/*----------------------+
 | SongName             |
 +----------------------+
 | Not About The Guitar |
 | The Second Time      |
 | Starting Again       |
 +----------------------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator batas

Batas lokal adalah batas untuk setiap server jarak jauh. Server root menggabungkan baris dari server jarak jauh, lalu menerapkan batas global.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Penetapan ID acak

Operator penugasan ID acak menghasilkan output dengan membaca baris inputnya dan menambahkan angka acak ke setiap baris. Fungsi ini kompatibel dengan operator Filter atau Sort untuk mencapai metode pengambilan sampel. Metode pengambilan sampel yang didukung adalah Bernoulli dan Reservoir.

Misalnya, kueri berikut menggunakan pengambilan sampel Bernoulli dengan rasio pengambilan sampel sebesar 10 persen.

SELECT s.songname
FROM   songs AS s TABLESAMPLE bernoulli (10 PERCENT);

/*----------------+
 | SongName       |
 +----------------+
 | Starting Again |
 +----------------*/

Karena hasilnya adalah sampel, hasil dapat bervariasi setiap kali kueri dijalankan meskipun kuerinya sama.

Rencana eksekusi operator sampel Bernoulli

Dalam rencana eksekusi ini, operator Random Id Assign menerima inputnya dari operator gabungan terdistribusi, yang menerima inputnya dari pemindaian indeks. Operator menampilkan baris dengan ID acak dan operator Filter kemudian menerapkan predikat skalar pada ID acak dan menampilkan sekitar 10 persen baris.

Contoh berikut menggunakan Reservoir

sampling dengan frekuensi sampling 2 baris.

SELECT s.songname
FROM   songs AS s TABLESAMPLE reservoir (2 rows);

/*------------------------+
 | SongName               |
 +------------------------+
 | I Knew You Were Magic  |
 | The Second Time        |
 +------------------------*/

Karena hasilnya adalah sampel, hasil dapat bervariasi setiap kali kueri dijalankan meskipun kuerinya sama.

Berikut adalah rencana eksekusi:

Rencana eksekusi operator sampel reservoir

Dalam rencana eksekusi ini, operator Random Id Assign menerima inputnya dari operator gabungan terdistribusi, yang menerima inputnya dari pemindaian indeks. Operator menampilkan baris dengan ID acak dan operator Sort kemudian menerapkan urutan pengurutan pada ID acak dan menerapkan LIMIT dengan 2 baris.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Gabungan pemisahan lokal

Operator gabungan pemisahan lokal menemukan pemisahan tabel yang disimpan di server lokal, menjalankan subkueri pada setiap pemisahan, lalu membuat gabungan yang menggabungkan semua hasil.

Gabungan pemisahan lokal muncul dalam rencana eksekusi yang memindai tabel penempatan. Penempatan dapat meningkatkan jumlah pemisahan dalam tabel, sehingga lebih efisien untuk memindai pemisahan dalam batch berdasarkan lokasi penyimpanan fisiknya.

Misalnya, tabel Singers menggunakan kunci penempatan untuk mempartisi data penyanyi:

CREATE TABLE Singers (
    SingerId INT64 NOT NULL,
    SingerName STRING(MAX) NOT NULL,
    ...
    Location STRING(MAX) NOT NULL PLACEMENT KEY
) PRIMARY KEY (SingerId);

Sekarang, pertimbangkan kueri ini:

SELECT BirthDate FROM Singers;

Berikut adalah rencana eksekusi:

Rencana eksekusi operator gabungan pemisahan lokal

Gabungan terdistribusi mengirimkan subkueri ke setiap batch pemisahan yang disimpan secara fisik bersama di server yang sama. Di setiap server, local split union menemukan pemisahan yang menyimpan data Singers, menjalankan subkueri di setiap pemisahan, dan menampilkan hasil gabungan. Dengan cara ini, gabungan terdistribusi dan gabungan pemisahan lokal bekerja sama untuk memindai tabel Singers secara efisien. Tanpa gabungan pemisahan lokal, gabungan terdistribusi akan mengirim satu RPC per pemisahan, bukan per batch pemisahan, sehingga menghasilkan perjalanan pulang pergi RPC yang berlebihan jika ada lebih dari satu pemisahan per batch.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

DataBlockToRowAdapter

Pengoptimal kueri Spanner secara otomatis menyisipkan operator DataBlockToRowAdapter di antara sepasang operator yang beroperasi menggunakan metode eksekusi yang berbeda. Inputnya adalah operator yang menggunakan metode eksekusi berorientasi batch dan outputnya dimasukkan ke operator yang dieksekusi dalam metode eksekusi berorientasi baris. Untuk mengetahui informasi selengkapnya, lihat Mengoptimalkan eksekusi kueri.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

RowToDataBlockAdapter

Pengoptimal kueri Spanner secara otomatis menyisipkan operator RowToDataBlockAdapter di antara sepasang operator yang beroperasi menggunakan metode eksekusi yang berbeda. Inputnya adalah operator yang menggunakan metode eksekusi berorientasi baris dan outputnya dimasukkan ke operator yang dieksekusi dalam metode eksekusi berorientasi batch. Untuk mengetahui informasi selengkapnya, lihat Mengoptimalkan eksekusi kueri.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Hasil serialisasi

Operator serialize result adalah kasus khusus dari operator compute struct yang melakukan serialisasi setiap baris hasil akhir kueri, untuk ditampilkan ke klien.

Kueri berikut menunjukkan operator ini:

SELECT array
  (
    select as struct so.songname,
            so.songgenre
    FROM   songs AS so
    WHERE  so.singerid = s.singerid)
FROM  singers AS s;

/*------------------------------------------------------------------+
 | Unspecified                                                      |
 +------------------------------------------------------------------+
 | []                                                               |
 | [[Let's Get Back Together, COUNTRY], [Starting Again, ROCK]]     |
 | [["Not About The Guitar", "BLUES"]]                              |
 | []                                                               |
 | []                                                               |
 +------------------------------------------------------------------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator hasil serialisasi

Operator serialize result membuat hasil yang berisi, untuk setiap baris tabel Singers, array pasangan SongName dan SongGenre untuk lagu-lagu dari penyanyi.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Urutkan

Operator sort membaca baris input, mengurutkannya berdasarkan kolom, lalu menampilkan hasil yang telah diurutkan.

Kueri berikut menunjukkan operator ini:

SELECT s.songgenre
FROM   songs AS s
ORDER  BY songgenre;

/*--------------------------+
 | SongGenre                |
 +--------------------------+
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 | CLASSICAL                |
 | COUNTRY                  |
 | ROCK                     |
 | ROCK                     |
 | ROCK                     |
 +--------------------------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi operator pengurutan

Dalam rencana eksekusi ini, operator pengurutan menerima baris inputnya dari operator gabungan terdistribusi, mengurutkan baris input, dan menampilkan baris yang diurutkan ke operator hasil serialisasi.

Untuk membatasi jumlah baris yang ditampilkan, operator pengurutan dapat secara opsional memiliki parameter LIMIT dan OFFSET. Untuk skenario terdistribusi, operator pengurutan dengan operator LIMIT atau OFFSET dibagi menjadi pasangan lokal-global. Setiap server jarak jauh menerapkan urutan pengurutan dan batas atau offset lokal untuk baris inputnya, lalu menampilkan hasilnya ke server root. Server root menggabungkan baris yang dikirim oleh server jarak jauh, mengurutkannya, lalu menerapkan batas/offset global.

Kueri berikut menunjukkan operator ini:

SELECT s.songgenre
FROM   songs AS s
ORDER  BY songgenre
LIMIT  3;

/*--------------------------+
 | SongGenre                |
 +--------------------------+
 | BLUES                    |
 | BLUES                    |
 | BLUES                    |
 +--------------------------*/

Rencana eksekusi akan muncul sebagai berikut:

Rencana eksekusi batas operator pengurutan

Paket eksekusi menampilkan batas lokal untuk server jarak jauh dan batas global untuk server root.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

TVF

Operator fungsi bernilai tabel menghasilkan output dengan membaca baris inputnya dan menerapkan fungsi yang ditentukan. Fungsi ini dapat menerapkan pemetaan dan menampilkan jumlah baris yang sama dengan input. Hal ini juga dapat berupa generator yang menampilkan lebih banyak baris atau filter yang menampilkan lebih sedikit baris.

Kueri berikut menunjukkan operator ini:

SELECT genre,
       songname
FROM   ml.predict(model genreclassifier, TABLE songs)

/*-----------------------+--------------------------+
 | Genre                 | SongName                 |
 +-----------------------+--------------------------+
 | Country               | Not About The Guitar     |
 | Rock                  | The Second Time          |
 | Pop                   | Starting Again           |
 | Pop                   | Nothing Is The Same      |
 | Country               | Let's Get Back Together  |
 | Pop                   | I Knew You Were Magic    |
 | Electronic            | Blue                     |
 | Rock                  | 42                       |
 | Rock                  | Fight Story              |
 +-----------------------+--------------------------*/

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.

Input gabungan

Operator input gabungan menampilkan hasil ke operator gabungan semua. Lihat operator gabungkan semua untuk contoh operator input gabungan dalam rencana eksekusi.

Properti dan statistik eksekusi

Properti operator menjelaskan sifat yang digunakan saat operator dijalankan. Statistik eksekusi adalah nilai yang dikumpulkan selama eksekusi kueri untuk membantu Anda menilai performa operator.

Operator Filter memiliki properti berbeda tambahan.

Properti

Nama Deskripsi
Kondisi Predikat yang diterapkan ke setiap baris input. Jika benar, baris akan diteruskan ke operator berikutnya; jika salah, baris akan dihapus.
Metode eksekusi Dalam Eksekusi baris, operator memproses satu baris dalam satu waktu. Dalam Eksekusi batch, operator memproses batch baris sekaligus.

Statistik eksekusi

Nama Deskripsi
Latensi Waktu berlalu dari semua eksekusi yang dilakukan di operator.
Latensi kumulatif Total waktu operator saat ini dan turunannya.
Waktu CPU Jumlah waktu CPU yang dihabiskan untuk mengeksekusi operator.
Waktu CPU kumulatif Total waktu CPU yang dihabiskan untuk mengeksekusi operator dan turunannya.
Waktu eksekusi Total waktu yang diperlukan untuk menjalankan kueri dan memproses hasil.
Baris yang ditampilkan Jumlah baris yang dihasilkan oleh operator ini
Jumlah eksekusi Frekuensi operator dieksekusi. Beberapa eksekusi dapat berjalan secara paralel.