Browse YugabyteDB Tips by topic. Select a topic below to quickly find related Tips.
YSQL & SQL
142
Query Performance & Tuning
102
Indexes & Data Modeling
96
Connections & Drivers
30
Developer Tools & Integration
7
YBA & Operations
144
Aeon & Cloud
8
Backup, Restore & DR
17
xCluster & Replication
8
Security & Authentication
45
PostgreSQL Compatibility
68
Kubernetes & Deployment
5
AI, RAG & Vector Search
9
Transactions & Consistency
13
Data Movement & Utilities
9
Tips, Tools & Extras
18
YSQL & SQL
142 Tips
SQL syntax, functions, data types, transactions, and PostgreSQL-compatible features.
Aggregates
2 Tips
Sometimes a simple SQL feature can make reporting queries much easier to read. One of my favorite examples is PostgreSQL’s FILTER clause […]
When working with large partitioned tables in YugabyteDB, performance of simple aggregate queries like COUNT(*) can vary significantly depending on how the […]
Built-in Functions
5 Tips
The Postgres pg_database_size(name) built-in system function retunrs the disk space used by the database with the specified name. Although YugabyteDB is Postgres […]
In YSQL (Yugabyte Structured Query Language), idle sessions refer to database connections that remain open but are not actively executing queries. These […]
Pi Day 2024 is today (Thursday, March 14, 2024)! We all know that the irrational number π is a mathematical constant that […]
The translate() function in both PostgreSQL and YugabyteDB’s Postgres compatible YSQL API, does one-to-one translation of characters in a single operation. The […]
Sometimes a query result looks wrong at first glance… until you realize YugabyteDB is doing exactly what the type system told it […]
Constraints
4 Tips
Partitioning is another term for physically dividing large tables in YugabyteDB into smaller, more manageable tables to improve performance. Because partitioned tables […]
In PostgreSQL-compatible databases like YugabyteDB, it’s easy to assume that foreign key relationships “just work.” But one subtle pitfall that can silently […]
In YugabyteDB, just like in PostgreSQL, the YSQL API doesn’t require a primary key when creating a table. However, because YugabyteDB distributes […]
A foreign key in YSQL is used to maintain the referential integrity of data between two tables: values in columns in one […]
CTE
1 Tip
When working with distributed databases like YugabyteDB, writing safe, performant, and transactionally consistent SQL can get tricky — especially when your app […]
Data Types
22 Tips
YSQL (YugabyteDB Structured Query Language) supports two dedicated data types to store JSON (JavaScript Object Notation) data. JSON Stores JSON data as […]
YSQL supports the JSON and JSONB data types which both can store JSON (JavaScript Object Notation) data. JSON stores an exact copy […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. These include the following data […]
Migrating system metadata between YCQL Universes can be challenging since system keyspaces, such as system_schema, cannot be transferred using simple INSERT INTO […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
When most people think about databases, they think about storing business transactions, customer activity, or financial records that span days, years, or […]
💡 TL;DR PostgreSQL allows NaN in NUMERIC. YugabyteDB currently does not. The best solution is to model “NaN” explicitly in your schema, […]
When working with JSONB in YugabyteDB, it is common to promote frequently queried JSON fields into STORED generated columns. That pattern works, […]
A customer recently asked a great question about working with jsonb attributes in YugabyteDB: 1. Are JSONB attribute values always returned as […]
🧑💼 Customer Story A customer recently automated their backup validation pipeline and wanted to parse snapshot metadata using: yb-admin list_snapshots show_details JSON […]
Columns that have a SERIAL data type are auto-incremented. YugabyteDB supports SMALLSERIAL, SERIAL, and BIGSERIAL which are short notation for sequences of […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. One such type is […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. One such type is […]
💡 Intro YSQL (like PostgreSQL) gives us INT (32-bit) and BIGINT (64-bit), but there’s no native 128-bit integer. So what happens when […]
JSONB is incredibly flexible in YSQL. It lets you store semi-structured data, evolve your schema over time, and keep related attributes together […]
The the previous tip, Update JSONB the Smart Way with jsonb_set() and the || Merge Operator, we looked at two cleaner ways […]
Sometimes a database difference is not about the value itself, but about how that value is represented when it comes back out. […]
The following character data types are supported in YugabyteDB YSQL: varchar(n): variable-length string char(n): fixed-length, blank padded text, varchar: variable unlimited length While […]
Sometimes a query result looks wrong at first glance… until you realize YugabyteDB is doing exactly what the type system told it […]
When building a schema in YugabyteDB, you might catch yourself repeating the same constraints, like making sure emails are valid, integers are […]
DDL
36 Tips
Materialized views in YSQL are relations that persist the results of a query. They can be created using the CREATE MATERIALIZED VIEW […]
A database superuser bypasses all permission checks, except the right to log in. This is a dangerous privilege and should not be […]
When you issue a CREATE SEQUENCE statement in a session, the current session user becomes the owner of the seqeunce. Example: yugabyte=# […]
When a CREATE VIEW statement is issued in a session, the view’s ownership is assigned to the current session user. Example: yugabyte=# […]
A composite type represents the structure of a row or record; it is essentially just a list of field names and their data […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. These include the following data […]
In YCQL the DROP KEYSPACE statement is used remove a keyspace from the system. An error is raised if the specified keyspace […]
While there isn’t a single command to drop all tables in a schema, you can easily accomplish that task by generating and […]
Partitioning is another term for physically dividing large tables in YugabyteDB into smaller, more manageable tables to improve performance. Because partitioned tables […]
The ANALYZE command collects statistics about the contents of tables in the database, and stores the results in the pg_statistic system catalog. These […]
In the YugabyteDB’s YCQL API, DDL security statements are instructions for managing and restricting operations on the database objects. Examples: Create, grant, […]
In a previous YugabyteDB Tip, we built a pure SQL function to export a table’s CREATE TABLE DDL directly from YugabyteDB system […]
In YSQL you can display the structure of a table, including indexes and constraints, by issuing the d table_name meta-command. yugabyte=# CREATE […]
Intro To export schema from YugabyteDB, the most common approach is to use the ysql_dump utility: ysql_dump --include-yb-metadata This produces DDL that […]
YugabyteDB is a distributed SQL database compatible with PostgreSQL, designed for high availability across multiple regions. For database administrators, extracting schema details—such […]
YugabyteDB is a distributed SQL database with PostgreSQL compatibility that lets you manage data across multiple regions while ensuring high availability. It […]
In the YBA Platform, only user-created YCQL keyspaces can currently be backed up and restored; system keyspaces and tables, including roles and […]
Migrating system metadata between YCQL Universes can be challenging since system keyspaces, such as system_schema, cannot be transferred using simple INSERT INTO […]
If you upgraded into the YugabyteDB 2024.1 era and enabled Enhanced PostgreSQL Compatibility Mode, there is an easy mistake to miss: You […]
In the previous tip GENERATE A RANDOM STRING, we learned how to create a function to do just that. In that version […]
In the previous tip GENERATE A RANDOM TIMESTAMP BETWEEN TWO TIMESTAMPS, we learned how to create a function to do just that. […]
The use of indexes can enhance database performance by enabling the database server to find rows faster. You can create, drop, and […]
There are a lot of configuration parameters in YSQL that affect the behavior of the Yugabyte database system. The SHOW command in […]
When working with YugabyteDB, especially in large or distributed deployments, understanding how your tables and indexes are partitioned is critical for performance, […]
🚨 The Problem Today a customer asked a great (and very real) question: “What if a DBA accidentally runs DROP DATABASE on […]
In YugabyteDB’s YSQL api, securing columns from users or providing access to only a limited set of columns can be implemented via […]
A unique index disallows duplicate values from being inserted into the indexed columns. But this does not apply to NULL values. Here […]
As you may know, a database table in YugabyteDB is made up of columns and rows. There is no theoretical maximum number of […]
Although it’s possible to add a primary key constraint to an existing table with the ALTER TABLE ADD CONSTRAINT command, it’s best […]
Just as a single Postgres server process can manage multiple databases at the same time, Yugabyte allows you to create and manage […]
There might come a time where you’ll want to shrink the size of a VARCHAR field in a table. Example: yugabyte=# d […]
In PostgreSQL, tablespaces allow administrators to specify where on a disk specific tables and indexes should reside based on how users want […]
Starting in YugabyteDB 2025.2, a new table-level locking capability (📌 Early Access) significantly improves how YugabyteDB handles concurrent DDL. Instead of failing […]
One of YugabyteDB’s core missions is to deliver the most PostgreSQL-compatible distributed SQL database in the world, combining the familiar PostgreSQL experience […]
PostgreSQL extension functionality allows for bundling multiple SQL objects together in a single package that can be loaded or removed from your database. […]
A table column in YSQL can have a default value. If an INSERT statement does not specify a value for the column, […]
DML
13 Tips
YSQL supports the JSONB data type which stores a parsed representation of a JavaScript Object Notation (JSON) document hierarchy of subvalues in an appropriate internal format. […]
In YSQL, a view is the result set of a stored query, which can be queried in the same manner as a […]
YSQL supports the JSONB data type which stores a parsed representation of a JavaScript Object Notation (JSON) document hierarchy of subvalues in an appropriate internal […]
By default, inserts into a YCQL table overwrite data on primary key collisions. So INSERTs do an UPSERT. This an intended CQL […]
The UPDATE statement modifies the values of specified columns in all rows that meet certain conditions. When no conditions are specified in […]
We can use the RETURNING clause to return values from the rows that were deleted using a bulk-delete statement! yugabyte=# CREATE TABLE […]
Intro 🎁 Have you ever written a simple multi-column IN clause, something like WHERE ROW(a, b) IN ((1, 1), (2, 2)), and […]
Need to insert a bunch of rows? No problem, you can do it in a single INSERT SQL statement in YugabyteDB! yugabyte=# […]
If you need to move data rows from one table to another table, you’d probably immediately consider an INSERT followed by a […]
You can move data from one table to another in two SQL commands, an INSERT followed by a DELETE. But it’s possible […]
Primary keys are your best defense against duplicates, but sometimes you inherit a table without one, or you want to de-dupe by […]
The Primary Key constraint is a means to uniquely identify a specific row in a table via one or more columns. To […]
A table column in YSQL can have a default value. If an INSERT statement does not specify a value for the column, […]
Event Triggers
1 Tip
🚨 The Problem Today a customer asked a great (and very real) question: “What if a DBA accidentally runs DROP DATABASE on […]
Exception Handling
1 Tip
When migrating PL/SQL code from Oracle to YugabyteDB’s PostgreSQL-compatible YSQL layer, one of the trickiest differences is exception handling. Oracle has its […]
Foreign Data Wrapper
2 Tips
postgres_fdw is incredibly useful when you need to query a remote PostgreSQL-compatible database from YugabyteDB. But there is one performance rule you […]
Why this tip exists Sometimes you just want to prove it’s possible: ● “Can YugabyteDB read data from SQL Server?” ● “Can […]
Foreign Keys
2 Tips
YugabyteDB now supports foreign key references to partitioned tables…a PostgreSQL 12+ feature that brings referential integrity to partitioned parents. This is available starting […]
In PostgreSQL-compatible databases like YugabyteDB, it’s easy to assume that foreign key relationships “just work.” But one subtle pitfall that can silently […]
Like
1 Tip
Searching for values that end with or contain a particular string can be tricky with a traditional index. A predicate such as: […]
Locks
3 Tips
🧭 What You’ll Learn ● Why DDL may not block DML in YugabyteDB by default ● How behavior changes when table-level locks […]
In the world of distributed SQL databases, concurrency and consistency often live in tension. YugabyteDB already offers strong transactional guarantees and flexible […]
PostgreSQL provides a means for creating locks that have application-defined meanings. These are called advisory locks, because the system does not enforce their use […]
Materialized View
2 Tips
Materialized views in YSQL are relations that persist the results of a query. They can be created using the CREATE MATERIALIZED VIEW […]
For larger tables and indexes that are hash-sharded, we can specify the number of initial tablet splits desired as part of the […]
Pagination
1 Tip
When applications need to page through query results, a very common (but often inefficient) pattern shows up: SELECT some_columns FROM some_table ORDER […]
PLPGSQL
2 Tips
Oracle developers often rely on explicit cursors to loop through result sets or to parameterize queries inside PL/SQL procedures. When migrating to […]
If you’re migrating from Oracle to YugabyteDB, you may have run across the concept of orphaned indexes. In Oracle, there are views […]
SEARCH_PATH
1 Tip
If you’ve worked with the Oracle database you know that a synonym is an alias for a schema object such as the tables, […]
Sequence
5 Tips
When you issue a CREATE SEQUENCE statement in a session, the current session user becomes the owner of the seqeunce. Example: yugabyte=# […]
Sequences are specialized database objects in YSQL that generate unique numeric identifiers. While they are often used to create auto-incrementing primary keys […]
Sequences are powerful database objects built to generate unique numeric identifiers. While they’re most commonly used to create auto-incrementing primary keys for […]
Why This Matters In YugabyteDB, sequences are distributed objects. High CACHE settings and session-level caching can lead to larger gaps in generated […]
In YSQL the column constraint GENERATED ALWAYS AS IDENTITY allows you to automatically assign a unique number to a column. Example: yugabyte=# […]
SQL
7 Tips
Sometimes in YugabyteDB YSQL, you might want to measure the size of the data in a row… for example, to estimate storage, […]
Most applications probably never issue an UPDATE that explicitly assigns a column back to itself. For example: UPDATE t SET v = […]
Prepared statements are great… until they suddenly aren’t. With the YugabyteDB JDBC Smart Driver (which inherits pgJDBC behavior), a prepared statement is […]
Ever need to map codes to labels without creating a whole new table? In YugabyteDB, you can use the SQL VALUES clause […]
Have you ever noticed a prepared statement in PostgreSQL (or YugabyteDB YSQL) that runs quickly at first but then, after a handful […]
A new index can make a query faster. It can also change which rows come back first. That matters a lot when […]
A partial index can work perfectly when you test a query with literal values, yet disappear when the same query is executed […]
SQL Functions
39 Tips
If you have some data sitting in an external file and would like to use it in your database queries, you can […]
YSQL supports the JSONB data type which stores a parsed representation of a JavaScript Object Notation (JSON) document hierarchy of subvalues in an appropriate internal format. […]
YSQL supports the JSONB data type which stores a parsed representation of a JavaScript Object Notation (JSON) document hierarchy of subvalues in an appropriate internal […]
You might need to close all user sessions connected to a YugabyteDB database if, for example, there is severe resource contention or […]
In YugabyteDB’s YSQL API, the interval data type is used to store and manipulate a time period. Examples: yugabyte=# SELECT '1 Minute […]
Sequences are specialized database objects in YSQL that generate unique numeric identifiers. While they are often used to create auto-incrementing primary keys […]
YugabyteDB is a PostgreSQL-compatible distributed database that supports the majority of PostgreSQL syntax. YugabyteDB also inherits all of the awesome built-in function that […]
UUIDs look random… but they aren’t. Every UUID encodes its version directly in the bits, and you can extract it easily in […]
The pg_postmaster_start_time() function returns the start time of the server where you execute it. Example: But your YugabyteDB database is most likely […]
Pivoting a the rows of a query’s result set into columns is magically simple using YSQLSH, YugabyteDB’s YSQL command line interface. The […]
You can display the size of a YSQL table via the pg_table_size function. Example: yugabyte=# CREATE TABLE test (c1 INT); CREATE TABLE […]
By default, YugabyteDB presplits a table in ysql_num_shards_per_tserver * num_of_tserver shards. We can display the number of tablets for a table using the […]
Using the YSQL API, temporary tables exist in their own unique schema, so you can’t assign a schema name when you create […]
The version() built-in function returns both the supported PostgreSQL version and the version of YugabyteDB. If you are just interested in the […]
Are you migrating from Oracle to YugabyteDB? If so, Orafce is a very useful PostgreSQL Extension that allows you to implement some […]
Shell scripting is a powerful and versatile tool for working with databases and SQL. It can help you automate tasks, manipulate data, […]
YugabyteDB allows columns of a table to be defined as variable-length multidimensional arrays. The UNNEST() function can be used later to expand […]
As we learned in several earlier tips, we can create a random integer and a random string in YugabyteDB quite easily. But […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random strings. This is very easy in […]
In the previous tip GENERATE A RANDOM STRING, we learned how to create a function to do just that. In that version […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
In the previous tip GENERATE A RANDOM TIMESTAMP BETWEEN TWO TIMESTAMPS, we learned how to create a function to do just that. […]
UUIDv7 has become a popular choice for modern applications because it combines global uniqueness with time-based ordering. That makes it appealing for […]
To display an up to date “current” row count of a table, we can run the classic SELECT COUNT(*) statement. Example: yugabyte=# […]
The use of indexes can enhance database performance by enabling the database server to find rows faster. You can create, drop, and […]
A unique index disallows duplicate values from being inserted into the indexed columns. But this does not apply to NULL values. Here […]
YugabyteDB automatically splits user YSQL tables into multiple shards, called tablets, using either a hash– or range– based strategy. You can see the Tablets […]
YugabyteDB is a distributed SQL database composed of one or more nodes. In YSQL you can list the nodes (hosts) in the […]
A regular expression is a character sequence that is an abbreviated definition of a set of strings (a regular set). Regular Expressions have […]
We learned in a previous tip how to export data into a file. Now let’s see how we can first convert the […]
In YugabyteDB’s YSQL API the WIDTH_BUCKET function constructs equal width histograms, in which the histogram range is divided into intervals (buckets) of […]
We learned in a previous tip that the YB_TABLE_PROPERTIES function can be used to display the number of tablets for a YSQL […]
A YugabyteDB universe is a group of nodes (VMs, physical machines, or containers) that collectively function as a resilient and scalable distributed […]
Sometimes a query result looks wrong at first glance… until you realize YugabyteDB is doing exactly what the type system told it […]
YSQL inherits from Postgres the built-in function pg_typeof function which returns the OID of the data type of the value that is […]
Stored Procedures
23 Tips
In a previous YugabyteDB Tip, Replicating a Small Dimension Table for Local Reads in Every Region, we looked at how to use […]
Sequences are powerful database objects built to generate unique numeric identifiers. While they’re most commonly used to create auto-incrementing primary keys for […]
YugabyteDB is a PostgreSQL-compatible distributed database that supports the majority of PostgreSQL syntax. YugabyteDB also inherits all of the awesome built-in function that […]
We can display a list of tables and their UUID (table_id) values by opening the YB-Master UI (<master_host>:7000/) and then clicking Tables in the navigation bar. […]
Partitioning is another term for physically dividing large tables in YugabyteDB into smaller, more manageable tables to improve performance. Because partitioned tables […]
Shell scripting is a powerful and versatile tool for working with databases and SQL. It can help you automate tasks, manipulate data, […]
In a previous YugabyteDB Tip, we built a pure SQL function to export a table’s CREATE TABLE DDL directly from YugabyteDB system […]
In YSQL you can display the structure of a table, including indexes and constraints, by issuing the d table_name meta-command. yugabyte=# CREATE […]
As we learned in several earlier tips, we can create a random integer and a random string in YugabyteDB quite easily. But […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random JSONB strings. Although there is not […]
Whenever you are populating table columns with dummy data you’ll probably need to generate some random strings. This is very easy in […]
In the previous tip GENERATE A RANDOM STRING, we learned how to create a function to do just that. In that version […]
In YSQL there is the familiar built-in function named RANDOM which generates a random value between 0 (inclusive) and 1 (exclusive). Although […]
In the previous tip GENERATE A RANDOM TIMESTAMP BETWEEN TWO TIMESTAMPS, we learned how to create a function to do just that. […]
There are a lot of configuration parameters in YSQL that affect the behavior of the Yugabyte database system. The SHOW command in […]
yb_hash_code is a function that returns the hash of a set of given input values using the hash function DocDB uses to […]
From within the YSQLSH CLI you can use the ef metacommand to open the code for a function or procedure into the […]
PostgreSQL setting parameters are often called GUC, short for the name of the ‘Grand Unified Configuration scheme’ project that introduced them. Since […]
We learned in a previous tip that the YB_TABLE_PROPERTIES function can be used to display the number of tablets for a YSQL […]
YSQL inherits from Postgres the built-in function pg_typeof function which returns the OID of the data type of the value that is […]
Synonyms
1 Tip
If you’ve worked with the Oracle database you know that a synonym is an alias for a schema object such as the tables, […]
Types
1 Tip
Sometimes a query result looks wrong at first glance… until you realize YugabyteDB is doing exactly what the type system told it […]
variables
2 Tips
ysqlsh is a shell for interacting with the YugabyteDB YSQL API. By default, the commands that you type are kept in a […]
If you’ve worked with ysqlsh, the shell for interacting with the YugabyteDB YSQL API, you are probably familiar with the set meta-command. […]
View
2 Tips
In YSQL, a view is the result set of a stored query, which can be queried in the same manner as a […]
When a CREATE VIEW statement is issued in a session, the view’s ownership is assigned to the current session user. Example: yugabyte=# […]
Views
4 Tips
When a CREATE VIEW statement is issued in a session, the view’s ownership is assigned to the current session user. Example: yugabyte=# […]
🤔 The Question You’ve got a dataset… but all the dates are from the 1970s. You want to: ● Keep the original […]
In a distributed SQL database like YugabyteDB, understanding where data actually lives is just as important as understanding the schema itself. Once […]
We learned in a previous tip how we can from within the YSQLSH CLI use the ef metacommand to open the code for […]
XML
1 Tip
PostgreSQL includes a native xml data type and a rich set of XML/XPath functions (XMLEXISTS, xpath, xpath_exists, XMLSERIALIZE, XMLTABLE, etc.). YugabyteDB does […]
Query Performance & Tuning
102 Tips
Query plans, optimizer behavior, statistics, memory, hot spots, and performance tuning.
Explain Plans
9 Tips
Across this indexing series, we improved the same query step by step. We started with a simple index on tenant_id. Then we: […]
In the YugabyteDB Tip, How ORDER BY LIMIT Can Change the Best Index in YugabyteDB, the fitth tip in our index tuning […]
In the previous tip Why Your Index Scan Still Reads Thousands of Rows, the second in our index tuning series, we saw […]
Prepared statements are great… until they suddenly aren’t. With the YugabyteDB JDBC Smart Driver (which inherits pgJDBC behavior), a prepared statement is […]
A multi-column IN predicate is a convenient way to perform a batch of point lookups: SELECT item_id, description, category_id, state_code, lookup_hash, version, […]
Have you ever noticed a prepared statement in PostgreSQL (or YugabyteDB YSQL) that runs quickly at first but then, after a handful […]
As of YugabyteDB 2025.1, you can now use the PostgreSQL feature EXPLAIN (SETTINGS) to see which planner-related GUCs (configuration settings) were non-default […]
YugabyteDB’s new Query Diagnostics feature, avaiable is release 2025.1.1.1, lets you capture a rich diagnostic bundle for a particular query over a […]
Common questions engineers search for: ● Why is my indexed query still scanning thousands of rows? ● Why does PostgreSQL / YugabyteDB […]
Follower Reads
2 Tips
YugabyteDB supports follower reads for YSQL, allowing read-only queries to be served from follower replicas where the data is exactly stale equal […]
YugabyteDB is a transactional database that supports distributed transactions. A transaction is a sequence of operations performed as a single logical unit […]
Hot Spots
5 Tips
When you move from a single-node database to a distributed system like YugabyteDB, one design decision suddenly matters a lot more: 👉 […]
Hot shards happen when too many rows land in a small subset of tablets. That subset becomes a bottleneck while other tablets […]
Every YSQL table should have a primary key which identifies a unique row. A primary key has 2 components: The partition key […]
Some columns naturally move in one direction as new rows are inserted. Think timestamps, event times, sequence values, or identity columns. These […]
When migrating from PostgreSQL to YugabyteDB, table load time is only part of the story. Secondary indexes can become the real bottleneck. […]
Load Balance
3 Tips
The ysqlsh CLI is the shell for interacting with the YugabyteDB YSQL API. The -h (or --host) flag specifies the host name […]
Yugabyte’s Smart Drivers (Java, Python, Go, etc.) handle load balancing, leader routing, etc. C++, however, doesn’t yet have that… But we can […]
YugabyteDB provides cluster-aware Smart Drivers for Java, Go, and Node.js that automatically route queries to the right node and balance load with […]
Memory Usage
6 Tips
When troubleshooting query behavior, connection sizing, or general node health, it can be useful to answer a few simple questions: ● How […]
When troubleshooting YSQL memory, there are really three different questions: 1. How much memory is being used?2. Which YSQL backend is consuming […]
In YugabyteDB, a PostgreSQL backend process refers to the individual processes that manage SQL client connections in a PostgreSQL-compatible way. Built on […]
In PostgreSQL, shared_buffers is a configuration parameter that determines the amount of memory dedicated to caching data blocks in shared memory. This is […]
When it comes to query performance in PostgreSQL-compatible databases like YugabyteDB, one of the most impactful (and often overlooked) settings is work_mem. […]
TL;DR A previous YugabyteDB tip, Measure Total Postgres Backend Usage, showed how to measure total current backend memory usage using PSS (Proportional […]
Metrics
1 Tip
Prometheus is a widely used standard for time-series monitoring in cloud-native infrastructure, utilizing time-series data as a source for generating alerts. Every […]
Performance
78 Tips
Active Session History (ASH) provides a comprehensive view of current and historical system activity by sampling session activity within the database. A […]
YugabyteDB’s distributed index backfill can take advantage of multiple tablets and YB-TServers to build an index in parallel. In most environments, the […]
In YSQL the ANALYZE command collects statistics about the contents of tables in the database, and stores the results in the pg_statistic system […]
Ever see a query plan that suddenly flips to a seq scan, or cardinality estimates that are off by 100×? Nine times […]
🌟 Introduction In a distributed SQL engine such as YugabyteDB, query performance hinges on the optimizer’s ability to choose the right execution […]
YugabyteDB’s cost-based optimizer (CBO) is a big deal. Turn it on, keep stats fresh, and your plans get smarter, closer to PostgreSQL […]
In a previous YugabyteDB Tip, we measured how long it takes to establish a YSQL connection using ysqlsh. This time, we’ll take […]
In a previous post, we explored how to benchmark connection times with the YugabyteDB JDBC Smart Driver. The Smart Driver provides features […]
In high-performance environments, even milliseconds matter. Whether you’re fine-tuning client connection pools, debugging startup latency, or sizing infrastructure for scale, knowing how […]
The UPDATE statement modifies the values of specified columns in all rows that meet certain conditions. When no conditions are specified in […]
Intro In a previous tip, Prevent Hot Shards with Bucket-Based Indexes, we saw how bucket-based indexes can prevent hot shards by spreading […]
When you move from a single-node database to a distributed system like YugabyteDB, one design decision suddenly matters a lot more: 👉 […]
When working with query performance in YugabyteDB, the pg_stat_statements extension is your best friend. It collects execution statistics for all SQL statements, […]
Across this indexing series, we improved the same query step by step. We started with a simple index on tenant_id. Then we: […]
When troubleshooting YSQL memory, there are really three different questions: 1. How much memory is being used?2. Which YSQL backend is consuming […]
postgres_fdw is incredibly useful when you need to query a remote PostgreSQL-compatible database from YugabyteDB. But there is one performance rule you […]
🚀 Introduction YugabyteDB fully supports PostgreSQL’s inet and cidr datatypes, allowing you to store and manipulate IPv4 and IPv6 network addresses. However, […]
DocDB is the underlying document storage engine of YugabyteDB and is built on top of a highly customized and optimized version of RocksDB, […]
The ANALYZE command collects statistics about the contents of tables in the database, and stores the results in the pg_statistic system catalog. These […]
In a previous YugabyteDB Tip, we explored how to use cbo_stat_dump to recreate production optimizer behavior in a clean environment: 👉 Recreating […]
YugabyteDB Anywhere (YBA) provides a powerful management and observability layer for your YugabyteDB clusters, including metrics, health dashboards, alerts, and query performance […]
Intro 🎁 Have you ever written a simple multi-column IN clause, something like WHERE ROW(a, b) IN ((1, 1), (2, 2)), and […]
When working with distributed databases like YugabyteDB, writing safe, performant, and transactionally consistent SQL can get tricky — especially when your app […]
Exact row counts are common in migrations, validation, and operational checks. In YugabyteDB, SELECT COUNT(*) is correct and already distributed, but it […]
We use the CREATE INDEX statement to create an index on the specified columns of the specified table. Indexes are primarily used […]
YugabyteDB’s cluster balancer is responsible for automatically redistributing tablet replicas and leaders across the nodes in a cluster. You see it at […]
Why This Matters In YugabyteDB, sequences are distributed objects. High CACHE settings and session-level caching can lead to larger gaps in generated […]
Triggers can be easy to forget about. A query may look simple from the application side, but behind the scenes a trigger […]
As your application evolves, it’s common to accumulate indexes that are no longer being used. These unused indexes take up storage, slow […]
A YugabyteDB query can sometimes fail with an error like this: ERROR: temporary file size exceeds temp_file_limit (1048576kB) At first glance, this […]
UUIDv7 has become a popular choice for modern applications because it combines global uniqueness with time-based ordering. That makes it appealing for […]
Sometimes you need to force a specific query plan, even when the query includes an IN (...) list whose length changes at […]
Intro In distributed databases, the fastest query is the one that doesn’t touch disk at all. That’s the philosophy behind YugabyteDB’s DocDB […]
In the YugabyteDB Tip, How ORDER BY LIMIT Can Change the Best Index in YugabyteDB, the fitth tip in our index tuning […]
In the YugabyteDB Tip How to Eliminate “Rows Removed by Filter” in YugabyteDB, we improved our index so that filtering happens directly […]
In Tip #3, we improved our index so filtering happened inside the index scan. In Tip #4, we saw how IN() predicates […]
Introduction Designing an efficient index is one of the most important skills for optimizing SQL queries. Many developers know that indexes improve […]
In the previous tip Why Your Index Scan Still Reads Thousands of Rows, the second in our index tuning series, we saw […]
When working with YugabyteDB, especially in large or distributed deployments, understanding how your tables and indexes are partitioned is critical for performance, […]
Prepared statements are great… until they suddenly aren’t. With the YugabyteDB JDBC Smart Driver (which inherits pgJDBC behavior), a prepared statement is […]
In YugabyteDB, collecting up-to-date table statistics is critical when the cost-based optimizer (CBO) is enabled. These statistics guide the optimizer in choosing […]
YugabyteDB’s Auto Analyze service helps keep table statistics fresh automatically. These statistics are important because the YSQL planner, including the cost-based optimizer, […]
In a distributed SQL database like YugabyteDB, the way data and indexes are partitioned across nodes has a major impact on performance. […]
In PostgreSQL-compatible databases like YugabyteDB, it’s easy to assume that foreign key relationships “just work.” But one subtle pitfall that can silently […]
When a new YSQL backend session executes a query for the first time, PostgreSQL must read metadata from system catalog tables In […]
pg_stat_monitor is a Query Performance Monitoring tool for PostgreSQL and supported in YugabyteDB. It collects performance statistics and provides query performance insights […]
What if you could capture key metrics at a moment in time across your entire YugabyteDB cluster… and then replay it later […]
YugabyteDB delivers the best of both worlds: horizontal scalability and global distribution, powered by a PostgreSQL-compatible query layer (YSQL). But even in […]
TL;DR Starting in 2025.2.0.0 (and backported to 2025.1.3.0), YugabyteDB automatically updates pg_class.reltuples for both the base table and newly created index after […]
In our previous tip, Generate UUIDv7 in YSQL, we showed how to generate UUIDv7 values directly in YugabyteDB YSQL and use them […]
Some columns naturally move in one direction as new rows are inserted. Think timestamps, event times, sequence values, or identity columns. These […]
🚀 Introduction In distributed databases, not all indexes are created equal. Some indexes look perfectly fine… until your system scales. A classic […]
TL;DR When a query plan changes in production, teams often try to copy production data into another environment to reproduce the issue. […]
Applications that frequently open and close YSQL connections can generate more database work than the SQL being executed might suggest. Every fresh […]
This Tip is the second in a two-part series looking at the performance impact of large multi-column IN lists in YugabyteDB. In […]
A multi-column IN predicate is a convenient way to perform a batch of point lookups: SELECT item_id, description, category_id, state_code, lookup_hash, version, […]
When working with cost-based optimization (CBO) in a distributed SQL database like YugabyteDB, keeping your table statistics accurate is crucial for optimal […]
If you’ve ever found yourself deep in a performance tuning or debugging session in YugabyteDB, experimenting with session-level configuration parameters (also known […]
In PostgreSQL, shared_buffers is a configuration parameter that determines the amount of memory dedicated to caching data blocks in shared memory. This is […]
In YSQL establishing a statement timeout via the statement_timeout parameter restricts queries from exceeding a designated duration. This timeout can be configured […]
UUIDs are a common choice for modern distributed applications because they provide globally unique identifiers without coordination. But once you decide to […]
When working with large partitioned tables in YugabyteDB, performance of simple aggregate queries like COUNT(*) can vary significantly depending on how the […]
High-volume inserts into YugabyteDB YSQL can be significantly faster when write batching and buffering are configured correctly. Many insert performance issues are […]
Have you ever noticed a prepared statement in PostgreSQL (or YugabyteDB YSQL) that runs quickly at first but then, after a handful […]
A customer recently asked a great question: “Is there a session setting in PostgreSQL or YugabyteDB to make query hints ignored?” Yes, […]
YugabyteDB’s Auto Analyze service helps keep table statistics fresh automatically. That matters because the YSQL planner, including the cost-based optimizer, depends on […]
In YSQL we can track function call counts and time used by enabling the track_functions parameter. The default is none, but you can […]
You are probably familiar with the timing meta-command in YSQL which turns on and off displaying of how long each SQL statement […]
A common tuning pattern in YugabyteDB is finding a query that looks simple, has indexes available, and still performs inconsistently. This often […]
As of YugabyteDB 2025.1, you can now use the PostgreSQL feature EXPLAIN (SETTINGS) to see which planner-related GUCs (configuration settings) were non-default […]
When querying multiple exact values on the same column in YugabyteDB, the difference between IN and OR isn’t just stylistic… 👉 It […]
YugabyteDB’s new Query Diagnostics feature, avaiable is release 2025.1.1.1, lets you capture a rich diagnostic bundle for a particular query over a […]
A slow query is not always just a “bad query.” Sometimes the query plan looks reasonable, the index is being used, and […]
When diagnosing performance issues in YugabyteDB, it’s easy to focus on: ● Query plans ● Tablet distribution ● RPC latency But sometimes […]
🚨 The Symptom You dropped a large table… days (or weeks) ago. But something feels off: 🔥 Compaction is still elevated on […]
👻 “Nothing Changed… So Why Is It Slow?” Every day at exactly 9:15am, your application slows down. ● Latency jumps from 2ms […]
Common questions engineers search for: ● Why is my indexed query still scanning thousands of rows? ● Why does PostgreSQL / YugabyteDB […]
⏳ Quick note on timing This tip took a little longer than usual to publish because I wanted to wait until Write […]
Read Restart
1 Tip
Distributed SQL databases like YugabyteDB guarantee correctness across nodes, even when clocks drift, and sometimes that means YSQL will stop a query […]
statistics
4 Tips
The ANALYZE command collects statistics about the contents of tables in the database, and stores the results in the pg_statistic system catalog. These […]
In a previous YugabyteDB Tip, we explored how to use cbo_stat_dump to recreate production optimizer behavior in a clean environment: 👉 Recreating […]
TL;DR When a query plan changes in production, teams often try to copy production data into another environment to reproduce the issue. […]
When working with cost-based optimization (CBO) in a distributed SQL database like YugabyteDB, keeping your table statistics accurate is crucial for optimal […]
Tracing
1 Tip
YugabyteDB has supported sampled tracing for years: even when enable_tracing=false, the system can still collect traces for a small fraction of RPCs […]
Tuning
41 Tips
YugabyteDB’s distributed index backfill can take advantage of multiple tablets and YB-TServers to build an index in parallel. In most environments, the […]
Intro In a previous tip, Prevent Hot Shards with Bucket-Based Indexes, we saw how bucket-based indexes can prevent hot shards by spreading […]
Routine OS patching should be boring. Patch the host, reboot or restart services, confirm YugabyteDB is healthy, and move on. But there […]
When troubleshooting query behavior, connection sizing, or general node health, it can be useful to answer a few simple questions: ● How […]
When you move from a single-node database to a distributed system like YugabyteDB, one design decision suddenly matters a lot more: 👉 […]
In a multi-region YugabyteDB cluster, tablet leaders matter. Every strongly consistent read and every write is served by the tablet leader. A […]
Across this indexing series, we improved the same query step by step. We started with a simple index on tenant_id. Then we: […]
When troubleshooting YSQL memory, there are really three different questions: 1. How much memory is being used?2. Which YSQL backend is consuming […]
In a previous YugabyteDB Tip, we explored how to use cbo_stat_dump to recreate production optimizer behavior in a clean environment: 👉 Recreating […]
YugabyteDB Anywhere (YBA) provides a powerful management and observability layer for your YugabyteDB clusters, including metrics, health dashboards, alerts, and query performance […]
Triggers can be easy to forget about. A query may look simple from the application side, but behind the scenes a trigger […]
A YugabyteDB query can sometimes fail with an error like this: ERROR: temporary file size exceeds temp_file_limit (1048576kB) At first glance, this […]
Modern SQL optimizers are incredibly smart. Most of the time, they’re far better at choosing an efficient execution plan than any human. […]
UUIDv7 has become a popular choice for modern applications because it combines global uniqueness with time-based ordering. That makes it appealing for […]
In the YugabyteDB Tip, How ORDER BY LIMIT Can Change the Best Index in YugabyteDB, the fitth tip in our index tuning […]
In the YugabyteDB Tip How to Eliminate “Rows Removed by Filter” in YugabyteDB, we improved our index so that filtering happens directly […]
In Tip #3, we improved our index so filtering happened inside the index scan. In Tip #4, we saw how IN() predicates […]
In the previous tip Why Your Index Scan Still Reads Thousands of Rows, the second in our index tuning series, we saw […]
In a distributed SQL database like YugabyteDB, the way data and indexes are partitioned across nodes has a major impact on performance. […]
In PostgreSQL-compatible databases like YugabyteDB, it’s easy to assume that foreign key relationships “just work.” But one subtle pitfall that can silently […]
In YugabyteDB, just like in PostgreSQL, the YSQL API doesn’t require a primary key when creating a table. However, because YugabyteDB distributes […]
Secondary indexes in YugabyteDB are critical for improving database query performance by allowing faster access to rows. However, like any tool, they […]
In YugabyteDB, a PostgreSQL backend process refers to the individual processes that manage SQL client connections in a PostgreSQL-compatible way. Built on […]
What if you could capture key metrics at a moment in time across your entire YugabyteDB cluster… and then replay it later […]
Some columns naturally move in one direction as new rows are inserted. Think timestamps, event times, sequence values, or identity columns. These […]
🚀 Introduction In distributed databases, not all indexes are created equal. Some indexes look perfectly fine… until your system scales. A classic […]
Applications that frequently open and close YSQL connections can generate more database work than the SQL being executed might suggest. Every fresh […]
This Tip is the second in a two-part series looking at the performance impact of large multi-column IN lists in YugabyteDB. In […]
A multi-column IN predicate is a convenient way to perform a batch of point lookups: SELECT item_id, description, category_id, state_code, lookup_hash, version, […]
Sometimes you have a small dimension table that is read constantly, joined frequently, and rarely updated. For example, maybe every application region […]
Row-Level Security (RLS) is a powerful way to enforce tenant isolation directly inside YugabyteDB. A typical multi-tenant policy might look like this: […]
UUIDs are a common choice for modern distributed applications because they provide globally unique identifiers without coordination. But once you decide to […]
When it comes to query performance in PostgreSQL-compatible databases like YugabyteDB, one of the most impactful (and often overlooked) settings is work_mem. […]
A common tuning pattern in YugabyteDB is finding a query that looks simple, has indexes available, and still performs inconsistently. This often […]
When querying multiple exact values on the same column in YugabyteDB, the difference between IN and OR isn’t just stylistic… 👉 It […]
When migrating from PostgreSQL to YugabyteDB, table load time is only part of the story. Secondary indexes can become the real bottleneck. […]
TL;DR A previous YugabyteDB tip, Measure Total Postgres Backend Usage, showed how to measure total current backend memory usage using PSS (Proportional […]
YugabyteDB 2025.2 introduces a powerful set of DocDB-aware columns in pg_stat_statements. These metrics finally let you answer a long-standing question: “What is […]
When diagnosing performance issues in YugabyteDB, it’s easy to focus on: ● Query plans ● Tablet distribution ● RPC latency But sometimes […]
Sometimes a query plan can look right at a high level, but the distributed execution details tell the real story. In YugabyteDB, […]
👻 “Nothing Changed… So Why Is It Slow?” Every day at exactly 9:15am, your application slows down. ● Latency jumps from 2ms […]
Indexes & Data Modeling
96 Tips
Indexes, partitioning, sharding, tables, keys, and schema-design patterns.
Automatic Tablet Splitting
3 Tips
You may see a tablet growing large and repeatedly attempting to split… only to fail with errors like: TABLET_SPLIT_KEY_RANGE_TOO_SMALL Failed to detect […]
When designing for scale in YugabyteDB, we often think about pre-splitting large tables. But indexes matter too. In YugabyteDB, secondary indexes are […]
Automatic tablet splitting allows a cluster to reshard data online and transparently once a specified size threshold is reached. This feature is […]
Databases
2 Tips
A common question from teams moving to YugabyteDB is: “Can we run a two-phase commit transaction across two databases in the same […]
Why this tip exists Sometimes you just want to prove it’s possible: ● “Can YugabyteDB read data from SQL Server?” ● “Can […]
GIN INDEX
2 Tips
YSQL supports the JSON and JSONB data types which both can store JSON (JavaScript Object Notation) data. JSON stores an exact copy […]
Secondary indexes boost database performance by enabling faster row retrieval. In YSQL you can create Unique, Partial, Covering, and Secondary Indexes with […]
Indexes
55 Tips
YugabyteDB’s distributed index backfill can take advantage of multiple tablets and YB-TServers to build an index in parallel. In most environments, the […]
Follow-up tip: This tip builds on Preserve Regional Index Tablespaces with pg_partman Templates, which demonstrates how a custom pg_partman template can preserve […]
In a previous YugabyteDB Tip, Replicating a Small Dimension Table for Local Reads in Every Region, we looked at how to use […]
YSQL supports the JSON and JSONB data types which both can store JSON (JavaScript Object Notation) data. JSON stores an exact copy […]
Intro In a previous tip, Prevent Hot Shards with Bucket-Based Indexes, we saw how bucket-based indexes can prevent hot shards by spreading […]
Maintaining data integrity in a distributed SQL database is critical, especially when indexes are involved. Indexes speed up query performance but are […]
If an online CREATE INDEX command fails, an invalid index may be left behind. These indexes are not usable in queries, so […]
When you move from a single-node database to a distributed system like YugabyteDB, one design decision suddenly matters a lot more: 👉 […]
Secondary indexes boost database performance by enabling faster row retrieval. In YSQL you can create Unique, Partial, Covering, and Secondary Indexes with […]
Across this indexing series, we improved the same query step by step. We started with a simple index on tenant_id. Then we: […]
When a YugabyteDB table is assigned to a custom tablespace, it is reasonable to assume that any secondary indexes created on that […]
When designing for scale in YugabyteDB, we often think about pre-splitting large tables. But indexes matter too. In YugabyteDB, secondary indexes are […]
🚀 Introduction YugabyteDB fully supports PostgreSQL’s inet and cidr datatypes, allowing you to store and manipulate IPv4 and IPv6 network addresses. However, […]
In a previous tip we learned that Partitioning is another term for physically dividing large tables in YugabyteDB into smaller, more manageable tables […]
We use the CREATE INDEX statement to create an index on the specified columns of the specified table. Indexes are primarily used […]
As your application evolves, it’s common to accumulate indexes that are no longer being used. These unused indexes take up storage, slow […]
A YugabyteDB query can sometimes fail with an error like this: ERROR: temporary file size exceeds temp_file_limit (1048576kB) At first glance, this […]
If you upgraded into the YugabyteDB 2024.1 era and enabled Enhanced PostgreSQL Compatibility Mode, there is an easy mistake to miss: You […]
In the YugabyteDB Tip, How ORDER BY LIMIT Can Change the Best Index in YugabyteDB, the fitth tip in our index tuning […]
In the YugabyteDB Tip How to Eliminate “Rows Removed by Filter” in YugabyteDB, we improved our index so that filtering happens directly […]
In Tip #3, we improved our index so filtering happened inside the index scan. In Tip #4, we saw how IN() predicates […]
Introduction Designing an efficient index is one of the most important skills for optimizing SQL queries. Many developers know that indexes improve […]
When an index appears as INVALID in YugabyteDB, the first question is usually: Why did the index become invalid? For example, d […]
Index backfill in YugabyteDB allows you to create new indexes on large tables without blocking reads or writes. However, backfill can stall […]
Sometimes you want to temporarily disable an index … for example, to test the optimizer’s behavior without it, benchmark a new candidate […]
Indexes are supposed to accurately reflect what’s in the base table. Newer versions of YugabyteDB include yb_index_check() to validate this, but if […]
In the previous tip Why Your Index Scan Still Reads Thousands of Rows, the second in our index tuning series, we saw […]
When working with YugabyteDB, especially in large or distributed deployments, understanding how your tables and indexes are partitioned is critical for performance, […]
Storing sensitive information like Social Security Numbers (SSNs) securely is non-negotiable… but what happens when you need to search or index that […]
Online index creation in YugabyteDB is powerful… you can add columns, create indexes, and keep the application running without blocking reads or […]
In a distributed SQL database like YugabyteDB, the way data and indexes are partitioned across nodes has a major impact on performance. […]
Secondary indexes in YugabyteDB are critical for improving database query performance by allowing faster access to rows. However, like any tool, they […]
PostgreSQL provides an elegant way to handle problems such as overlapping reservations, duplicate-event windows, or effective-date ranges. A typical design uses a […]
The use of indexes can enhance YugabyteDB’s performance by enabling the database server to find rows faster. You can create, drop, and […]
TL;DR Starting in 2025.2.0.0 (and backported to 2025.1.3.0), YugabyteDB automatically updates pg_class.reltuples for both the base table and newly created index after […]
At first glance, YugabyteDB behaves just like PostgreSQL. You can create a table without a primary key: CREATE TABLE no_pk(id INT); No […]
If you’re migrating from Oracle to YugabyteDB, you may have run across the concept of orphaned indexes. In Oracle, there are views […]
Version scope: This tip applies specifically to YugabyteDB v2024.2 and earlier. The YSQL API in these releases is based on PostgreSQL 11, […]
🚀 Introduction In distributed databases, not all indexes are created equal. Some indexes look perfectly fine… until your system scales. A classic […]
Sometimes you have a small dimension table that is read constantly, joined frequently, and rarely updated. For example, maybe every application region […]
When dropping an index from a partitioned YSQL table, you might encounter an unexpected error like this: ERROR: cannot drop index app.event_history_search_idx […]
A new index can make a query faster. It can also change which rows come back first. That matters a lot when […]
A common tuning pattern in YugabyteDB is finding a query that looks simple, has indexes available, and still performs inconsistently. This often […]
Point-in-Time Recovery (PITR) in YugabyteDB protects databases from accidental DDL and DML by allowing recovery to a previous point within a configurable […]
When migrating from PostgreSQL to YugabyteDB, table load time is only part of the story. Secondary indexes can become the real bottleneck. […]
Searching for values that end with or contain a particular string can be tricky with a traditional index. A predicate such as: […]
The YSQL LIKE operator is used to match text values against a pattern using wildcards. If the search expression can be matched […]
The the previous tip, Update JSONB the Smart Way with jsonb_set() and the || Merge Operator, we looked at two cleaner ways […]
A slow query is not always just a “bad query.” Sometimes the query plan looks reasonable, the index is being used, and […]
📝 Introduction YugabyteDB’s cost-based optimizer (CBO) is designed to pick the lowest-cost execution plan. When using duplicate covering geo-localized indexes, this usually […]
A partial index can work perfectly when you test a query with literal values, yet disappear when the same query is executed […]
Vector search gets expensive fast. Without an index, every query has to compare your search embedding against every row in the table. […]
Common questions engineers search for: ● Why is my indexed query still scanning thousands of rows? ● Why does PostgreSQL / YugabyteDB […]
When working with vector search, dimension limits matter. Many embedding models fit comfortably inside 768, 1,024, or 1,536 dimensions. But some use […]
The use of secondary indexes can enhance database performance by enabling the database server to find rows faster. If you create too […]
Locality-optimized geo-partitioning
1 Tip
Geo-partitioning in YugabyteDB is one of its most powerful capabilities. It lets you: ● Keep data close to users ● Reduce latency […]
Partitioning
15 Tips
Follow-up tip: This tip builds on Preserve Regional Index Tablespaces with pg_partman Templates, which demonstrates how a custom pg_partman template can preserve […]
⚠️ Review in Progress This YugabyteDB Tip is currently under review for technical correctness by YugabyteDB engineering. This notice will be removed […]
🟢 Update (Nov 2025): The colocation issue described in this tip has been fixed in YugabyteDB 2025.1.1.2. You can now create hash-partitioned […]
Partitioning is another term for physically dividing large tables in YugabyteDB into smaller, more manageable tables to improve performance. In the following […]
Every YSQL table should have a primary key which identifies a unique row. A primary key has 2 components: The partition key […]
YugabyteDB now supports foreign key references to partitioned tables…a PostgreSQL 12+ feature that brings referential integrity to partitioned parents. This is available starting […]
In a distributed SQL database like YugabyteDB, the way data and indexes are partitioned across nodes has a major impact on performance. […]
Version scope: This tip applies to YugabyteDB v2025.1 and later, where the YSQL API is based on PostgreSQL 15. For YugabyteDB v2024.2 […]
When moving Oracle partitions that omit a lower or upper bound, translate them to Postgres/YSQL using MINVALUE and MAXVALUE. Also remember that […]
Multi-column partitioning can be a powerful tool for organizing data. In databases like Oracle, you can define a LIST partition on multiple […]
If you’re migrating from Oracle and miss USER_TAB_PARTITIONS and ALL_TAB_PARTITIONS, you can recreate them in YugabyteDB with two simple views over the […]
Version scope: This tip applies specifically to YugabyteDB v2024.2 and earlier. The YSQL API in these releases is based on PostgreSQL 11, […]
When dropping an index from a partitioned YSQL table, you might encounter an unexpected error like this: ERROR: cannot drop index app.event_history_search_idx […]
Geo-partitioning in YugabyteDB is one of its most powerful capabilities. It lets you: ● Keep data close to users ● Reduce latency […]
When working with large partitioned tables in YugabyteDB, performance of simple aggregate queries like COUNT(*) can vary significantly depending on how the […]
Row Count
5 Tips
Sometimes a simple question gets surprisingly interesting in a distributed database: How many rows are in each shard? In YugabyteDB, the physical […]
Exact row counts are common in migrations, validation, and operational checks. In YugabyteDB, SELECT COUNT(*) is correct and already distributed, but it […]
Getting a row count in YugabyteDB seems simple: SELECT COUNT(*) FROM transfers; But in a distributed system, this is: ● A full-table […]
After loading a large dataset into a table, your next step might be to confirm that all records were successfully inserted. To […]
TL;DR This tip introduces yb-topology-viewer, a lightweight demo application that helps you visualize how data is actually distributed across a YugabyteDB cluster […]
Row Counts
3 Tips
Sometimes a simple question gets surprisingly interesting in a distributed database: How many rows are in each shard? In YugabyteDB, the physical […]
Every YSQL table should have a primary key which identifies a unique row. A primary key has 2 components: The partition key […]
Getting a row count in YugabyteDB seems simple: SELECT COUNT(*) FROM transfers; But in a distributed system, this is: ● A full-table […]
Sharding
5 Tips
You may see a tablet growing large and repeatedly attempting to split… only to fail with errors like: TABLET_SPLIT_KEY_RANGE_TOO_SMALL Failed to detect […]
Sometimes a simple question gets surprisingly interesting in a distributed database: How many rows are in each shard? In YugabyteDB, the physical […]
In a previous tip, we explored how yb_tablet_metadata makes it easy to see tablet leadership and replica placement across a YugabyteDB cluster. […]
Exact row counts are common in migrations, validation, and operational checks. In YugabyteDB, SELECT COUNT(*) is correct and already distributed, but it […]
If you upgraded into the YugabyteDB 2024.1 era and enabled Enhanced PostgreSQL Compatibility Mode, there is an easy mistake to miss: You […]
Sizing
2 Tips
The Postgres pg_database_size(name) built-in system function retunrs the disk space used by the database with the specified name. Although YugabyteDB is Postgres […]
Sizing YugabyteDB isn’t just about ops/sec… it’s about how your workload, schema, and topology interact. At first glance, it’s tempting to do […]
Table Inheritance
1 Tip
YugabyteDB YSQL supports PostgreSQL-style table inheritance using the INHERITS keyword—a powerful tool to streamline schema design and avoid redundancy Why Use Table […]
table_id
1 Tip
Not long ago, a Yugabyte Tip shared a neat trick: how to display a table’s table_id in YSQL by calling yb_table_id(oid) inside […]
Tablespace
10 Tips
Follow-up tip: This tip builds on Preserve Regional Index Tablespaces with pg_partman Templates, which demonstrates how a custom pg_partman template can preserve […]
In a previous YugabyteDB Tip, Replicating a Small Dimension Table for Local Reads in Every Region, we looked at how to use […]
YugabyteDB colocation is a great fit for applications that contain many small tables and indexes. Instead of creating a separate tablet for […]
When a YugabyteDB table is assigned to a custom tablespace, it is reasonable to assume that any secondary indexes created on that […]
YugabyteDB is a distributed SQL database compatible with PostgreSQL, designed for high availability across multiple regions. For database administrators, extracting schema details—such […]
YugabyteDB is a distributed SQL database with PostgreSQL compatibility that lets you manage data across multiple regions while ensuring high availability. It […]
Tablespaces in YugabyteDB give users fine-grained control over where data lives, enabling better performance tuning, fault isolation, and cost management. By mapping […]
Tablespaces in YugabyteDB provide a way to control how and where data is stored across a distributed cluster. By defining tablespaces with […]
Version scope: This tip applies specifically to YugabyteDB v2024.2 and earlier. The YSQL API in these releases is based on PostgreSQL 11, […]
YugabyteDB has long supported PostgreSQL-compatible tablespaces to help control where data lives in a distributed cluster. This is especially useful when you […]
Tablet Leaders
8 Tips
You may see a tablet growing large and repeatedly attempting to split… only to fail with errors like: TABLET_SPLIT_KEY_RANGE_TOO_SMALL Failed to detect […]
YugabyteDB supports follower reads for YSQL, allowing read-only queries to be served from follower replicas where the data is exactly stale equal […]
TL;DR YugabyteDB splits hash-sharded tables into tablets using a deterministic hash space, replicates each tablet across nodes, and places leaders according to […]
In a distributed SQL database like YugabyteDB, understanding where data actually lives is just as important as understanding the schema itself. Once […]
When working with YugabyteDB, it is often useful to see how tablets are distributed across nodes. Two especially helpful questions are: ● […]
A leaderless tablet is a tablet that currently has no elected Raft leader. Because all writes and strongly consistent reads are served […]
In a previous tip, we learned that in recent versions of YugabyteDB, we can use the YB_LOCAL_TABLETS system view to map table […]
TL;DR This tip introduces yb-topology-viewer, a lightweight demo application that helps you visualize how data is actually distributed across a YugabyteDB cluster […]
Tablets
15 Tips
When you manually pre-split a YugabyteDB table, using SPLIT AT VALUES, you’re telling the database exactly how to divide its key space […]
You may see a tablet growing large and repeatedly attempting to split… only to fail with errors like: TABLET_SPLIT_KEY_RANGE_TOO_SMALL Failed to detect […]
YugabyteDB supports follower reads for YSQL, allowing read-only queries to be served from follower replicas where the data is exactly stale equal […]
Yugabyte Cloud Query Language (YCQL) is a semi-relational SQL API that is best fit for internet-scale OLTP and HTAP applications needing massive […]
When designing for scale in YugabyteDB, we often think about pre-splitting large tables. But indexes matter too. In YugabyteDB, secondary indexes are […]
In a previous tip, we explored how yb_tablet_metadata makes it easy to see tablet leadership and replica placement across a YugabyteDB cluster. […]
TL;DR YugabyteDB splits hash-sharded tables into tablets using a deterministic hash space, replicates each tablet across nodes, and places leaders according to […]
In a distributed SQL database like YugabyteDB, understanding where data actually lives is just as important as understanding the schema itself. Once […]
When working with YugabyteDB, it is often useful to see how tablets are distributed across nodes. Two especially helpful questions are: ● […]
A leaderless tablet is a tablet that currently has no elected Raft leader. Because all writes and strongly consistent reads are served […]
In a previous tip, we learned that in recent versions of YugabyteDB, we can use the YB_LOCAL_TABLETS system view to map table […]
In a distributed database like YugabyteDB, high availability and fault tolerance are core strength, but only if data replication is healthy. One […]
We learned in the YugabyteDB Tip View Metadata for YSQL/YCQL/System Tablets on a Server about the new (in YugabyteDB 2024.1) system view yb_local_tablets. […]
TL;DR This tip introduces yb-topology-viewer, a lightweight demo application that helps you visualize how data is actually distributed across a YugabyteDB cluster […]
Automatic tablet splitting allows a cluster to reshard data online and transparently once a specified size threshold is reached. This feature is […]
Connections & Drivers
30 Tips
Connection management, drivers, sessions, JDBC, Npgsql, and client connectivity.
Connection
14 Tips
If you want to prove (fast) that the YugabyteDB JDBC Smart Driver actually routes connections to the right YugabyteDB nodes, without fiddling […]
YSQL Connection Manager (YCM) is easy to enable and just as easy to accidentally connect around it during testing. That’s not misuse; […]
In a previous YugabyteDB Tip, we measured how long it takes to establish a YSQL connection using ysqlsh. This time, we’ll take […]
In high-performance environments, even milliseconds matter. Whether you’re fine-tuning client connection pools, debugging startup latency, or sizing infrastructure for scale, knowing how […]
ysqlsh is the shell for interacting with the YugabyteDB YSQL API. To connect to a database, you need the following information: the […]
Yugabyte Cloud Query Language (YCQL) is a semi-relational SQL API that is best fit for internet-scale OLTP and HTAP applications needing massive […]
When connecting to a distributed SQL cluster like YugabyteDB using Npgsql, it’s easy to assume that MaxPoolSize places a global limit on […]
Applications that frequently open and close YSQL connections can generate more database work than the SQL being executed might suggest. Every fresh […]
Why Connection Counts Matter in YugabyteDB One of the most common questions when deploying YugabyteDB in production is: How many database connections […]
We saw in this previous tip how to display the number of YSQL connections per node from the command line. This is […]
We learned in the tip LIST THE SERVERS IN YOUR CLUSTER that in YSQL we can list the nodes (hosts) in our […]
When using the YugabyteDB YSQL Connection Manager, you may come across this setting: ysql_conn_mgr_reserve_internal_conns At first glance, the name can be a […]
Client certificates are a common part of securing YugabyteDB clusters, especially when encryption in transit is enabled and pg_hba.conf is used to […]
If you use YSQL Connection Manager (YCM) and recently upgraded from YugabyteDB 2024.2 to 2025.1, you may have encountered a confusing failure: […]
Drivers
9 Tips
If you want to prove (fast) that the YugabyteDB JDBC Smart Driver actually routes connections to the right YugabyteDB nodes, without fiddling […]
In a previous YugabyteDB Tip, we measured how long it takes to establish a YSQL connection using ysqlsh. This time, we’ll take […]
In a previous post, we explored how to benchmark connection times with the YugabyteDB JDBC Smart Driver. The Smart Driver provides features […]
YugabyteDB may not appear as a native, certified data source in every BI and reporting tool, but that does not mean those […]
Yugabyte’s docs show how to connect DataHub to YugabyteDB via the Postgres interface (YSQL) and even call out running the DataHub quickstart […]
The YugabyteDB JDBC smart driver is a JDBC driver for YSQL built on the PostgreSQL JDBC driver, with additional connection load balancing […]
Yugabyte’s Smart Drivers (Java, Python, Go, etc.) handle load balancing, leader routing, etc. C++, however, doesn’t yet have that… But we can […]
YugabyteDB provides cluster-aware Smart Drivers for Java, Go, and Node.js that automatically route queries to the right node and balance load with […]
In a [previous tip], we enforced a global max connection limit while load balancing Npgsql connections across a YugabyteDB cluster. That earlier […]
JDBC
5 Tips
If you want to prove (fast) that the YugabyteDB JDBC Smart Driver actually routes connections to the right YugabyteDB nodes, without fiddling […]
In a previous YugabyteDB Tip, we measured how long it takes to establish a YSQL connection using ysqlsh. This time, we’ll take […]
In a previous post, we explored how to benchmark connection times with the YugabyteDB JDBC Smart Driver. The Smart Driver provides features […]
YugabyteDB may not appear as a native, certified data source in every BI and reporting tool, but that does not mean those […]
The YugabyteDB JDBC smart driver is a JDBC driver for YSQL built on the PostgreSQL JDBC driver, with additional connection load balancing […]
Network
7 Tips
When deploying YugabyteDB and YugabyteDB Anywhere (YBA) in AWS, one of the first hurdles is networking. The YugabyteDB official documentation lays out […]
The YugabyteDB Aeon documentation shows how to create an AWS Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
The YugabyteDB Aeon documentation explains how to create an Azure Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
Two recent YugabyteDB Tips used Private Service Endpoints to connect privately to YugabyteDB Aeon: 👉 AWS PrivateLink for Aeon on AWS 👉 […]
In many production environments, ICMP (ping, mtr) is blocked, but you still need to understand network latency between YugabyteDB nodes, especially in […]
If you haven’t already, start with YugabyteDB Tip #1: Understanding Multi-Region YugabyteDB on Kubernetes and Why Istio Is Required. Tip #1 explains […]
TL;DR If your “multi-region” YugabyteDB deployment on Kubernetes means multiple Kubernetes clusters (which is the normal case), you must solve cross-cluster service […]
Npgsql
1 Tip
When connecting to a distributed SQL cluster like YugabyteDB using Npgsql, it’s easy to assume that MaxPoolSize places a global limit on […]
Ports
1 Tip
🚀 Intro You’ve got your shiny new cluster nodes provisioned and ready for YugabyteDB or YugabyteDB Anywhere (YBA)… but before you install […]
Sessions
1 Tip
In YSQL (Yugabyte Structured Query Language), idle sessions refer to database connections that remain open but are not actively executing queries. These […]
Developer Tools & Integration
7 Tips
Developer tooling, application integration, and language-specific YugabyteDB topics.
Go
1 Tip
Security teams regularly scan YugabyteDB Anywhere (YBA) hosts and software for known vulnerabilities. When a CVE is associated with Go, one of […]
Integration
2 Tips
YugabyteDB may not appear as a native, certified data source in every BI and reporting tool, but that does not mean those […]
Yugabyte’s docs show how to connect DataHub to YugabyteDB via the Postgres interface (YSQL) and even call out running the DataHub quickstart […]
cql
4 Tips
By default, inserts into a YCQL table overwrite data on primary key collisions. So INSERTs do an UPSERT. This an intended CQL […]
In the YugabyteDB’s YCQL API, DDL security statements are instructions for managing and restricting operations on the database objects. Examples: Create, grant, […]
YugabyteDB automatically splits YCQL user tables into multiple shards, called tablets, using a hash based strategy. You can see the tablets for a table via the […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
YBA & Operations
144 Tips
YugabyteDB Anywhere administration, configuration, upgrades, maintenance, and operational tooling.
Automation
6 Tips
Each YugabyteDB release page includes platform-specific wget commands for downloading the release tarball. The filename contains both the YugabyteDB version and a […]
In a previous YugabyteDB Tip, Replicating a Small Dimension Table for Local Reads in Every Region, we looked at how to use […]
When deploying YugabyteDB and YugabyteDB Anywhere (YBA) in AWS, one of the first hurdles is networking. The YugabyteDB official documentation lays out […]
Managing distributed databases can seem complex, but YugabyteDB’s xCluster replication, powered by YugabyteDB Anywhere (YBA) and the new YBA CLI, makes automation […]
The YugabyteDB Aeon documentation explains how to create an Azure Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
Two recent YugabyteDB Tips used Private Service Endpoints to connect privately to YugabyteDB Aeon: 👉 AWS PrivateLink for Aeon on AWS 👉 […]
Cleanup
3 Tips
Primary keys are your best defense against duplicates, but sometimes you inherit a table without one, or you want to de-dupe by […]
YugabyteDB logs are incredibly useful for troubleshooting, performance analysis, auditing, and support investigations. But like all logs, they need a little housekeeping. […]
When working with a distributed SQL database like YugabyteDB, understanding object dependencies becomes essential—especially as your schema becomes more complex and layered. […]
CLI
52 Tips
Managing distributed databases can seem complex, but YugabyteDB’s xCluster replication, powered by YugabyteDB Anywhere (YBA) and the new YBA CLI, makes automation […]
YSQL supports the JSON and JSONB data types which both can store JSON (JavaScript Object Notation) data. JSON stores an exact copy […]
The YCQL shell (ycqlsh) is a CLI for interacting with YugabyteDB using YCQL. From within ycqlsh you can send output to a file […]
ysqlsh is the shell for interacting with the YugabyteDB YSQL API. To connect to a database, you need the following information: the […]
In YB release 2.25.0, we’ve upgraded our PostgreSQL fork from version 11.2 to 15.0, allowing you to take advantage of the many […]
YugabyteDB consists of 3 primary applications: yb-master(master), yb-tserver(tserver) and postgres. Yb-master and yb-tserver use the gFlags for managing configurations and feature flags. […]
When you connect to YugabyteDB using the ysqlsh client, you typically provide a host name using the -h switch. Later you may […]
As you explore the ysqlsh interactive shell, it’s useful to know that you can view the SQL queries executed for each meta-command […]
Pivoting a the rows of a query’s result set into columns is magically simple using YSQLSH, YugabyteDB’s YSQL command line interface. The […]
As highlighted in Distributed PostgreSQL on a Google Spanner Architecture – Query Layer, YSQL reuses the open source PostgreSQL query layer (written in […]
Yugabyte Cloud Query Language (YCQL) is a semi-relational SQL API that is best fit for internet-scale OLTP and HTAP applications needing massive […]
Shell scripting is a powerful and versatile tool for working with databases and SQL. It can help you automate tasks, manipulate data, […]
As a lazy DBA/Developer one my favorite short cuts to do is to let the database generate SQL commands for me. I […]
YugabyteDB is a distributed SQL database with PostgreSQL compatibility that lets you manage data across multiple regions while ensuring high availability. It […]
In the YBA Platform, only user-created YCQL keyspaces can currently be backed up and restored; system keyspaces and tables, including roles and […]
Migrating system metadata between YCQL Universes can be challenging since system keyspaces, such as system_schema, cannot be transferred using simple INSERT INTO […]
A long time ago a database developer asked me how she could produce a list of all table columns in the database […]
In the previous tip GENERATE A RANDOM STRING, we learned how to create a function to do just that. In that version […]
When working with ysqlsh, the command history feature is extremely useful. It allows you to quickly recall previous queries using the up-arrow […]
TL;DR When running: yb-admin list_snapshots SHOW_DETAILS JSON …the output can look like a metadata bug, especially after ALTER DATABASE ... RENAME. While […]
The yb-admin utility, located in the bin directory of YugabyteDB home, provides a command line interface for administering clusters. Two of its many command options, list_all_masters […]
We learned in a previous tip how we can from within the YSQLSH CLI use the ef metacommand to open the code for […]
From within the YSQLSH CLI you can use the ef metacommand to open the code for a function or procedure into the […]
The ysqlsh CLI is the shell for interacting with the YugabyteDB YSQL API. The -h (or --host) flag specifies the host name […]
ysqlsh is a shell for interacting with the YugabyteDB YSQL API. By default, the commands that you type are kept in a […]
The YugabyteDB YSQL (PostgreSQL compatble) API supports the creation of multiple databases. You can create a new database using the CREATE DATABASE command. […]
🧑💼 Customer Story A customer recently automated their backup validation pipeline and wanted to parse snapshot metadata using: yb-admin list_snapshots show_details JSON […]
The use of indexes can enhance YugabyteDB’s performance by enabling the database server to find rows faster. You can create, drop, and […]
The YugabyteDB SQL shell ysqlsh provides a CLI for interacting with YugabyteDB using YSQL. There is not a flag available on the command […]
Columns that have a SERIAL data type are auto-incremented. YugabyteDB supports SMALLSERIAL, SERIAL, and BIGSERIAL which are short notation for sequences of […]
For larger tables and indexes that are hash-sharded, we can specify the number of initial tablet splits desired as part of the […]
After loading a large dataset into a table, your next step might be to confirm that all records were successfully inserted. To […]
YugabyteDB is a transactional database that supports distributed transactions. A transaction is a sequence of operations performed as a single logical unit […]
After installing YugabyteDB Anywhere (YBA) from the command line using the YBA Installer, the next step is typically to open the YBA […]
The YSQLSH client includes a watch meta-command that repeatedly executes a query every n seconds. This is a handy feature if you […]
Some 20 years ago I started a new job with a company in Pittsburgh as an Oracle DBA. The first task given […]
If you try to reset a user password as a non-authenticated user in YCQL, you’ll get an error – even if logged […]
There are going to be SQL commands that you issue repeatedly. To avoid typing them every time you need them, you can […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. One such type is […]
YCQL supports collection data types to specify columns for data objects that can contain more than one value. One such type is […]
In PostgreSQL, tablespaces allow administrators to specify where on a disk specific tables and indexes should reside based on how users want […]
If you’ve worked with ysqlsh, the shell for interacting with the YugabyteDB YSQL API, you are probably familiar with the set meta-command. […]
We saw in this previous tip how to display the number of YSQL connections per node from the command line. This is […]
We learned in the tip LIST THE SERVERS IN YOUR CLUSTER that in YSQL we can list the nodes (hosts) in our […]
You are probably familiar with the timing meta-command in YSQL which turns on and off displaying of how long each SQL statement […]
By default the YSQLSH CLI draws the lines that separate the columns and rows of a result set using ascii characters. Example: […]
The YugabyteDB SQL shell ysqlsh provides a CLI for interacting with YugabyteDB using YSQL. There is not a flag available on the command […]
When working with YugabyteDB from the command line, yb-admin commands can get long fast. That is especially true when the cluster has […]
The pset meta-command in ysqlsh can be used to display an alternative value for NULL, which shows up as blank by default. […]
We learned in a previous tip that the YB_TABLE_PROPERTIES function can be used to display the number of tablets for a YSQL […]
YSQL configuration parameters play an important role in optimizing and enhancing database performance. The YSQL SHOW command allows inspection of the current […]
YSQL inherits from Postgres the built-in function pg_typeof function which returns the OID of the data type of the value that is […]
Command Line
14 Tips
In high-performance environments, even milliseconds matter. Whether you’re fine-tuning client connection pools, debugging startup latency, or sizing infrastructure for scale, knowing how […]
Being a distributed SQL database, YugabyteDB automatically splits the data in a table and distributes it across nodes. This is known as […]
The YugabyteDB SQL shell (ysqlsh) provides a CLI for interacting with YugabyteDB using YSQL The -c flag pecifies that ysqlsh is to execute […]
In YCQL the DROP KEYSPACE statement is used remove a keyspace from the system. An error is raised if the specified keyspace […]
Yugabyte’s yba-ctl (the YBA Installer CLI) is a powerful tool for installing and managing YugabyteDB Anywhere (YBA), whether locally or in production. It handles installation, […]
When working with ysqlsh, the command history feature is extremely useful. It allows you to quickly recall previous queries using the up-arrow […]
The yb-admin utility, located in the bin directory of YugabyteDB home, provides a command line interface for administering clusters. Two of its many command options, list_all_masters […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
YugabyteDB automatically splits YCQL user tables into multiple shards, called tablets, using a hash based strategy. You can see the tablets for a table via the […]
When an index is created on a populated table, YugabyteDB automatically backfills the existing data into the index. In most cases, this […]
In a distributed SQL database like YugabyteDB, clock synchronization across nodes isn’t just a nice-to-have, it’s critical. Coordinated timestamps underpin transaction consistency, […]
YugabyteDB is a distributed SQL database built to scale out while maintaining compatibility with the PostgreSQL ecosystem. That compatibility is not just […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
The list of the latest stable and preview releases of YugabyteDB can be found via the fabulous World Wide Web here: YugabyteDB […]
Config Params
10 Tips
YugabyteDB YSQL uses the PostgreSQL Audit Extension (pgAudit) to provide detailed session and/or object audit logging via YugabyteDB YB-TServer logging. Audit records […]
Being a distributed SQL database, YugabyteDB automatically splits the data in a table and distributes it across nodes. This is known as […]
There are a lot of configuration parameters in YSQL that affect the behavior of the Yugabyte database system. The SHOW command in […]
If you’ve ever changed session configuration parameters using SET …, it’s handy to know which settings differ from the defaults. YugabyteDB exposes […]
YugabyteDB YSQL control parameters play an important role in optimizing and enhancing database performance. In a previous tip, we learned how we […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
In YugabyteDB, GUC stands for Grand Unified Configuration. These are configuration parameters that control various aspects of the database system, such as […]
In a previous tip, we learned that YSQL configuration parameters play an important role in optimizing and enhancing database performance. And we […]
Normally when comparing a NULL with a NULL for equality you’ll get a NULL result. But that can be overridden with the […]
YSQL configuration parameters play an important role in optimizing and enhancing database performance. The YSQL SHOW command allows inspection of the current […]
Configuration
14 Tips
Case-insensitive search in YSQL is a much-requested feature, most likely to ease the migration from Microsoft SQL Server to YugabyteDB. You can […]
When preparing for a YugabyteDB upgrade or investigating a behavior change, a common question comes up: Did the default value of this […]
YugabyteDB exposes several YSQL configuration files through YB-TServer flags. Two particularly useful examples are: ● ysql_pg_conf_csv: controls PostgreSQL server configuration parameters normally […]
DocDB is the underlying document storage engine of YugabyteDB and is built on top of a highly customized and optimized version of RocksDB, […]
WSL, or Windows Subsystem for Linux, offers Windows users the ability to operate a Linux environment directly within their Windows system. By […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
In a distributed SQL database like YugabyteDB, clock synchronization across nodes isn’t just a nice-to-have, it’s critical. Coordinated timestamps underpin transaction consistency, […]
To manage YugabyteDB, you can use yugabyted. yugabyted acts as a parent server across the YB-TServer and YB-Masters servers. yugabyted also provides […]
After installing YugabyteDB Anywhere (YBA) from the command line using the YBA Installer, the next step is typically to open the YBA […]
Why this follow-up tip exists In Tip #1, Motion, DRS, and Clock Skew… Why Distributed Databases Aren’t “Just Another VM”, it was […]
The YB-Master service maintains the system metadata and records, including tables and the locations of their tablets, as well as users and […]
When working with YugabyteDB from the command line, yb-admin commands can get long fast. That is especially true when the cluster has […]
TL;DR (for the impatient) ● VMware DRS and vMotion are optimized for stateless or loosely stateful workloads ● Temporary clock skew during […]
TL;DR Clock skew doesn’t corrupt data in YugabyteDB… but it will stop your cluster to protect correctness. This tradeoff is critical for […]
Deployment
1 Tip
In a multi-region YugabyteDB cluster, tablet leaders matter. Every strongly consistent read and every write is served by the tablet leader. A […]
GFlags
16 Tips
Gflags, also known as configuration flags, are used in YugabyteDB to manage configurations and feature flags for its primary applications: yb-master (master), […]
YugabyteDB YSQL uses the PostgreSQL Audit Extension (pgAudit) to provide detailed session and/or object audit logging via YugabyteDB YB-TServer logging. Audit records […]
Being a distributed SQL database, YugabyteDB automatically splits the data in a table and distributes it across nodes. This is known as […]
When preparing for a YugabyteDB upgrade or investigating a behavior change, a common question comes up: Did the default value of this […]
YugabyteDB consists of 3 primary applications: yb-master(master), yb-tserver(tserver) and postgres. Yb-master and yb-tserver use the gFlags for managing configurations and feature flags. […]
The transactions property of the CREATE TABLE command in YCQL specifies if distributed transactions are enabled in the table. This property defaults to […]
YSQL uses PostgreSQL-style host-based authentication (HBA) rules to determine which clients can connect, which database users they can use, and which authentication […]
YugabyteDB exposes several YSQL configuration files through YB-TServer flags. Two particularly useful examples are: ● ysql_pg_conf_csv: controls PostgreSQL server configuration parameters normally […]
There are various configuration flags (called gFlags) for both YB-Master and YB-TServer nodes in a YugabyteDB universe. These gFlags allow you to […]
For larger tables and indexes that are hash-sharded, we can specify the number of initial tablet splits desired as part of the […]
There are numerous configuration flags, G-Flags in YugabyteDB, which allow you to fine tune the core database services yb-tserver and yb-master. Several […]
There are numerous configuration flags, gFlags in YugabyteDB, which allow you to fine tune the core database services yb-master and yb-tserver. Several […]
The YB-Master service maintains the system metadata and records, including tables and the locations of their tablets, as well as users and […]
The YB-TServer service performs the actual input-output for end-user requests. It handles Data Manipulation Language (DML) statements such as INSERT, UPDATE, DELETE, and SELECT. YB-TServer actions […]
In the YugabyteDB Tip CHANGE TSERVER GFLAG ON THE FLY we learned how to update the in memory value of a gFlag […]
Transaction isolation is foundational to handling concurrent transactions in databases. The SQL-92 standard defines four levels of transaction isolation (in decreasing order […]
GUC
9 Tips
YugabyteDB exposes several YSQL configuration files through YB-TServer flags. Two particularly useful examples are: ● ysql_pg_conf_csv: controls PostgreSQL server configuration parameters normally […]
YSQL relies heavily on PostgreSQL’s system catalog cache, commonly called the catcache, to avoid repeatedly reading metadata from system catalog tables such […]
Distributed SQL databases like YugabyteDB guarantee correctness across nodes, even when clocks drift, and sometimes that means YSQL will stop a query […]
If you’ve ever changed session configuration parameters using SET …, it’s handy to know which settings differ from the defaults. YugabyteDB exposes […]
YugabyteDB YSQL control parameters play an important role in optimizing and enhancing database performance. In a previous tip, we learned how we […]
A common multi-tenant design is to use a shared application database role and identify the active tenant with a custom YSQL configuration […]
PostgreSQL setting parameters are often called GUC, short for the name of the ‘Grand Unified Configuration scheme’ project that introduced them. Since […]
In YSQL we can track function call counts and time used by enabling the track_functions parameter. The default is none, but you can […]
Sometimes a query plan can look right at a high level, but the distributed execution details tell the real story. In YugabyteDB, […]
GUC Parameters
9 Tips
YugabyteDB exposes several YSQL configuration files through YB-TServer flags. Two particularly useful examples are: ● ysql_pg_conf_csv: controls PostgreSQL server configuration parameters normally […]
YSQL relies heavily on PostgreSQL’s system catalog cache, commonly called the catcache, to avoid repeatedly reading metadata from system catalog tables such […]
Distributed SQL databases like YugabyteDB guarantee correctness across nodes, even when clocks drift, and sometimes that means YSQL will stop a query […]
If you’ve ever changed session configuration parameters using SET …, it’s handy to know which settings differ from the defaults. YugabyteDB exposes […]
If you’ve ever found yourself deep in a performance tuning or debugging session in YugabyteDB, experimenting with session-level configuration parameters (also known […]
A common multi-tenant design is to use a shared application database role and identify the active tenant with a custom YSQL configuration […]
In YugabyteDB, GUC stands for Grand Unified Configuration. These are configuration parameters that control various aspects of the database system, such as […]
When it comes to query performance in PostgreSQL-compatible databases like YugabyteDB, one of the most impactful (and often overlooked) settings is work_mem. […]
As of YugabyteDB 2025.1, you can now use the PostgreSQL feature EXPLAIN (SETTINGS) to see which planner-related GUCs (configuration settings) were non-default […]
Install
9 Tips
In the previous tip, Validating Python SELinux Bindings on YugabyteDB Database Nodes (with Automation Support), we introduced a script to validate an […]
WSL, or Windows Subsystem for Linux, offers Windows users the ability to operate a Linux environment directly within their Windows system. By […]
Why this follow-up tip exists In Tip #1, Motion, DRS, and Clock Skew… Why Distributed Databases Aren’t “Just Another VM”, it was […]
If you haven’t already, start with YugabyteDB Tip #1: Understanding Multi-Region YugabyteDB on Kubernetes and Why Istio Is Required. Tip #1 explains […]
Part 1: Installing YugabyteDB on Kubernetes with Minikube Running a local multi-node YugabyteDB cluster on Kubernetes is an excellent way to test […]
TL;DR If your “multi-region” YugabyteDB deployment on Kubernetes means multiple Kubernetes clusters (which is the normal case), you must solve cross-cluster service […]
🚀 Intro You’ve got your shiny new cluster nodes provisioned and ready for YugabyteDB or YugabyteDB Anywhere (YBA)… but before you install […]
Intro You know that feeling… you’re sure you opened every required port, only to hit an install error later because of one […]
When preparing server nodes for YugabyteDB Anywhere (YBA), there’s a small but critical prerequisite that’s easy to overlook: Database nodes must have […]
Log Files
4 Tips
YugabyteDB is a distributed SQL database that offers full PostgreSQL compatibility — which means you can use familiar SQL functions to inspect […]
When a new YSQL backend session executes a query for the first time, PostgreSQL must read metadata from system catalog tables In […]
YugabyteDB logs are incredibly useful for troubleshooting, performance analysis, auditing, and support investigations. But like all logs, they need a little housekeeping. […]
YugabyteDB has supported sampled tracing for years: even when enable_tracing=false, the system can still collect traces for a small fraction of RPCs […]
Logging
5 Tips
YugabyteDB is a distributed SQL database that offers full PostgreSQL compatibility — which means you can use familiar SQL functions to inspect […]
YugabyteDB logs are incredibly useful for troubleshooting, performance analysis, auditing, and support investigations. But like all logs, they need a little housekeeping. […]
The YB-Master service maintains the system metadata and records, including tables and the locations of their tablets, as well as users and […]
The YB-TServer service performs the actual input-output for end-user requests. It handles Data Manipulation Language (DML) statements such as INSERT, UPDATE, DELETE, and SELECT. YB-TServer actions […]
YugabyteDB has supported sampled tracing for years: even when enable_tracing=false, the system can still collect traces for a small fraction of RPCs […]
meta-commands
7 Tips
Lots of old school folks (like myself) use YSQL for administrative tasks. As you enter commands, eventually the command prompt will end […]
As you explore the ysqlsh interactive shell, it’s useful to know that you can view the SQL queries executed for each meta-command […]
As a lazy DBA/Developer one my favorite short cuts to do is to let the database generate SQL commands for me. I […]
When working with ysqlsh, the command history feature is extremely useful. It allows you to quickly recall previous queries using the up-arrow […]
ysqlsh is a shell for interacting with the YugabyteDB YSQL API. By default, the commands that you type are kept in a […]
There are going to be SQL commands that you issue repeatedly. To avoid typing them every time you need them, you can […]
If you’ve worked with ysqlsh, the shell for interacting with the YugabyteDB YSQL API, you are probably familiar with the set meta-command. […]
Meta-Data
5 Tips
In a previous YugabyteDB Tip, we built a pure SQL function to export a table’s CREATE TABLE DDL directly from YugabyteDB system […]
In a previous tip, we explored how yb_tablet_metadata makes it easy to see tablet leadership and replica placement across a YugabyteDB cluster. […]
When working with YugabyteDB, it is often useful to see how tablets are distributed across nodes. Two especially helpful questions are: ● […]
We learned in the YugabyteDB Tip View Metadata for YSQL/YCQL/System Tablets on a Server about the new (in YugabyteDB 2024.1) system view yb_local_tablets. […]
Introduced in YugabyteDB 2024.1.0, the YSQL yb_local_tablets view allows you to easily fetch the metadata for YSQL, YCQL, and system tablets of […]
Releases
3 Tips
The list of the latest stable and preview releases of YugabyteDB can be found via the fabulous World Wide Web here: YugabyteDB […]
If you use YSQL Connection Manager (YCM) and recently upgraded from YugabyteDB 2024.2 to 2025.1, you may have encountered a confusing failure: […]
As mentioned in a previous YugabyteDB Tip, we can view the recent releases of YugabyteDB via the web, an RSS feed, or […]
T-Server
1 Tip
When working with a distributed SQL database like YugabyteDB, understanding the unique identity of each node in the cluster becomes crucial, especially […]
TServer
4 Tips
DocDB is the underlying document storage engine of YugabyteDB and is built on top of a highly customized and optimized version of RocksDB, […]
In PostgreSQL, shared_buffers is a configuration parameter that determines the amount of memory dedicated to caching data blocks in shared memory. This is […]
The YB-TServer service performs the actual input-output for end-user requests. It handles Data Manipulation Language (DML) statements such as INSERT, UPDATE, DELETE, and SELECT. YB-TServer actions […]
YugabyteDB operates with a two-server architecture: YB-TServers handle the data, while YB-Masters manage the metadata. But don’t be misled into thinking that […]
Upgrade
6 Tips
Routine OS patching should be boring. Patch the host, reboot or restart services, confirm YugabyteDB is healthy, and move on. But there […]
When upgrading from a PostgreSQL 11-based YugabyteDB release to a PostgreSQL 15-based YugabyteDB release, the upgrade includes a PostgreSQL major-version upgrade phase. […]
YugabyteDB stores YSQL system metadata, referred to as the YSQL system catalog, in special tables. The metadata includes information about tables, columns, […]
During a YugabyteDB PostgreSQL 15 upgrade pre-check, you may encounter an error similar to: Performing Consistency Checks on Old Live Server SQL […]
A YSQL major-version upgrade is different from a normal YugabyteDB software upgrade. Moving from a PostgreSQL 11-based YugabyteDB release, such as the […]
When planning an upgrade for YugabyteDB or YugabyteDB Anywhere (YBA), it is easy to assume that a higher version number automatically means […]
Version
1 Tip
We learned in several earlier tips how to display the version of YugabyteDB. Example: Display YugabyteDB Version For fun, here are few […]
yb-ts-cli
2 Tips
Gflags, also known as configuration flags, are used in YugabyteDB to manage configurations and feature flags for its primary applications: yb-master (master), […]
In the YugabyteDB Tip CHANGE TSERVER GFLAG ON THE FLY we learned how to update the in memory value of a gFlag […]
YBA
11 Tips
Security teams regularly scan YugabyteDB Anywhere (YBA) hosts and software for known vulnerabilities. When a CVE is associated with Go, one of […]
The YugabyteDB Aeon documentation shows how to create an AWS Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
xCluster replication lets you stream data from one YugabyteDB universe to another for DR, migrations, or cross-region analytics. YugabyteDB Anywhere (YBA) exposes […]
Yugabyte’s yba-ctl (the YBA Installer CLI) is a powerful tool for installing and managing YugabyteDB Anywhere (YBA), whether locally or in production. It handles installation, […]
YugabyteDB Anywhere (YBA) provides a powerful management and observability layer for your YugabyteDB clusters, including metrics, health dashboards, alerts, and query performance […]
When using YugabyteDB Anywhere (YBA), you may notice that the Prometheus link in the YBA UI points to an internal endpoint instead […]
After installing YugabyteDB Anywhere (YBA) from the command line using the YBA Installer, the next step is typically to open the YBA […]
Organizations using YugabyteDB Anywhere (YBA) with enterprise identity providers such as Keycloak sometimes want to go beyond standard role mapping and make […]
🚨 The Symptom You dropped a large table… days (or weeks) ago. But something feels off: 🔥 Compaction is still elevated on […]
👻 “Nothing Changed… So Why Is It Slow?” Every day at exactly 9:15am, your application slows down. ● Latency jumps from 2ms […]
When you’re managing distributed databases at scale, every second matters. YugabyteDB Anywhere (YBA) is already designed to make it easier to deploy, […]
Aeon & Cloud
8 Tips
YugabyteDB Aeon plus AWS, Azure, cloud networking, and managed-service topics.
aeon
4 Tips
The YugabyteDB Aeon documentation shows how to create an AWS Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
The YugabyteDB Aeon documentation explains how to create an Azure Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
Two recent YugabyteDB Tips used Private Service Endpoints to connect privately to YugabyteDB Aeon: 👉 AWS PrivateLink for Aeon on AWS 👉 […]
What is YugabyteDB Aeon YugabyteDB, the distributed, PostgreSQL-compatible database, underlies YugabyteDB Aeon: a fully-managed, cloud-native “Database-as-a-Service” (DBaaS). Aeon lets you run clusters […]
AWS
3 Tips
When deploying YugabyteDB and YugabyteDB Anywhere (YBA) in AWS, one of the first hurdles is networking. The YugabyteDB official documentation lays out […]
The YugabyteDB Aeon documentation shows how to create an AWS Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
Two recent YugabyteDB Tips used Private Service Endpoints to connect privately to YugabyteDB Aeon: 👉 AWS PrivateLink for Aeon on AWS 👉 […]
Azure
1 Tip
The YugabyteDB Aeon documentation explains how to create an Azure Private Service Endpoint using the Aeon UI or the ybm CLI. But […]
Global Database
2 Tips
A common question from teams moving to YugabyteDB is: “Can we run a two-phase commit transaction across two databases in the same […]
xCluster replication is YugabyteDB’s implementation of asynchronous replication for disaster recovery. It allows you to set up one or more unidirectional replication flows between […]
Platform
1 Tip
Yugabyte Platform is a containerized application that is installed and managed using Replicated for mission-critical environments (for example, production, performance, or failure mode testing). […]
Backup, Restore & DR
17 Tips
Backups, snapshots, recovery, high availability, and disaster recovery.
Backups
13 Tips
Ever wrapped up a massive bulk load into your production YugabyteDB YCQL cluster and wished you could instantly refresh a secondary read-only […]
If you are a software engineer, you probably use Git every day. Need to test something risky?Create a branch. Need to preserve […]
🧭 Introduction Some lessons stick with you longer than others. This one isn’t just about databases. It’s about being ready before something […]
In the YBA Platform, only user-created YCQL keyspaces can currently be backed up and restored; system keyspaces and tables, including roles and […]
🚨 The Problem Today a customer asked a great (and very real) question: “What if a DBA accidentally runs DROP DATABASE on […]
💡 What You’ll Learn ● How Instant Database Cloning works internally (zero-copy + copy-on-write) ● How to recover from a DROP TABLE […]
Instant database cloning in YugabyteDB is one of those features that feels almost magical the first time you use it. You can […]
TL;DR When running: yb-admin list_snapshots SHOW_DETAILS JSON …the output can look like a metadata bug, especially after ALTER DATABASE ... RENAME. While […]
🧑💼 Customer Story A customer recently automated their backup validation pipeline and wanted to parse snapshot metadata using: yb-admin list_snapshots show_details JSON […]
Today’s YugabyteDB Tip is a follow-up to Making yb-admin list_snapshots Output Valid JSON tip! A few days ago we looked at how […]
If someone accidentally drops a table, runs a bad UPDATE, or deletes the wrong rows, YugabyteDB gives you two very powerful recovery-oriented […]
Point-in-Time Recovery (PITR) in YugabyteDB protects databases from accidental DDL and DML by allowing recovery to a previous point within a configurable […]
When working with YugabyteDB YSQL snapshots, it’s common to see two different UUIDs and wonder: ❓ Which snapshot did I restore? ❓ […]
Read Replicas
1 Tip
In YugabyteDB, read replicas are specialized nodes designed to handle read-heavy workloads by offloading read operations from the primary cluster. They are […]
Recover
3 Tips
🧭 Introduction Some lessons stick with you longer than others. This one isn’t just about databases. It’s about being ready before something […]
In PostgreSQL, disabling login for the default postgres role can be a common hardening step. In YugabyteDB, that same idea can go […]
YugabyteDB is a transactional database that supports distributed transactions. A transaction is a sequence of operations performed as a single logical unit […]
Snapshot
1 Tip
Transaction isolation is a fundamental concept for managing concurrent transactions in databases. The SQL-92 standard specifies four levels of transaction isolation, ranked […]
xCluster & Replication
8 Tips
xCluster, CDC, replication, Kafka, and distributed data movement.
CDC
1 Tip
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
Kafka
1 Tip
Introduction When building multi-region systems, it’s tempting to think: “We can just use a message bus like Kafka to handle concurrent writes […]
Replication
2 Tips
In a distributed database like YugabyteDB, high availability and fault tolerance are core strength, but only if data replication is healthy. One […]
xCluster replication is YugabyteDB’s implementation of asynchronous replication for disaster recovery. It allows you to set up one or more unidirectional replication flows between […]
xCluster
3 Tips
xCluster replication lets you stream data from one YugabyteDB universe to another for DR, migrations, or cross-region analytics. YugabyteDB Anywhere (YBA) exposes […]
When using transactional xCluster Disaster Recovery (DR) in YugabyteDB, the DR replica is intentionally read-only for user tables. The primary accepts writes; […]
xCluster replication is YugabyteDB’s implementation of asynchronous replication for disaster recovery. It allows you to set up one or more unidirectional replication flows between […]
xCluster Replication
4 Tips
One of the exciting new features in YugabyteDB 2025.1 is support for automatic DDL replication in xCluster. In previous releases, xCluster replicated […]
xCluster replication lets you stream data from one YugabyteDB universe to another for DR, migrations, or cross-region analytics. YugabyteDB Anywhere (YBA) exposes […]
When using transactional xCluster Disaster Recovery (DR) in YugabyteDB, the DR replica is intentionally read-only for user tables. The primary accepts writes; […]
Introduction One of the most common questions about YugabyteDB’s xCluster active-active replication is: “What happens if two universes update the same row […]
Security & Authentication
45 Tips
Authentication, authorization, encryption, passwords, roles, and privileges.
Audit
12 Tips
Security teams regularly scan YugabyteDB Anywhere (YBA) hosts and software for known vulnerabilities. When a CVE is associated with Go, one of […]
YugabyteDB YSQL has many cool built-in audit logging features. You can read about them on this doc page: Audit Logging For today’s tip […]
In PostgreSQL—and by extension, YugabyteDB—there’s no native trigger that fires on SELECT statements. This means we can’t use a traditional AFTER SELECT […]
Ever see a query plan that suddenly flips to a seq scan, or cardinality estimates that are off by 100×? Nine times […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
YugabyteDB YSQL uses the PostgreSQL Audit Extension (pgAudit) to provide detailed session and/or object audit logging via YugabyteDB YB-TServer logging. Audit records […]
The Postgres pg_database_size(name) built-in system function retunrs the disk space used by the database with the specified name. Although YugabyteDB is Postgres […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
When a table is created in YSQL, the catalog does not store information about the user who created it or the time […]
Tablespaces in YugabyteDB provide a way to control how and where data is stored across a distributed cluster. By defining tablespaces with […]
The log_connections parameter in YugabyteDB is a logging configuration option that records every connection attempt to the server to the PostgreSQL log file. […]
Encryption
2 Tips
Storing sensitive information like Social Security Numbers (SSNs) securely is non-negotiable… but what happens when you need to search or index that […]
Enabling encryption in transit is critical for securing your YugabyteDB cluster. It ensures that all communication between nodes (Masters ↔ Masters on […]
Identity
1 Tip
Identity columns in YugabyteDB automatically generate unique numbers for a column. They are defined using the GENERATED BY DEFAULT AS IDENTITY or […]
Password
2 Tips
Some 20 years ago I started a new job with a company in Pittsburgh as an Oracle DBA. The first task given […]
If you try to reset a user password as a non-authenticated user in YCQL, you’ll get an error – even if logged […]
Privileges
1 Tip
A YSQL major-version upgrade is different from a normal YugabyteDB software upgrade. Moving from a PostgreSQL 11-based YugabyteDB release, such as the […]
Read Only
2 Tips
In YB release 2.25.0, we’ve upgraded our PostgreSQL fork from version 11.2 to 15.0, allowing you to take advantage of the many […]
The YugabyteDB YSQL (PostgreSQL compatble) API supports the creation of multiple databases. You can create a new database using the CREATE DATABASE command. […]
Read Only Access
2 Tips
In YB release 2.25.0, we’ve upgraded our PostgreSQL fork from version 11.2 to 15.0, allowing you to take advantage of the many […]
In YugabyteDB, read replicas are specialized nodes designed to handle read-heavy workloads by offloading read operations from the primary cluster. They are […]
Security
31 Tips
YugabyteDB YSQL has many cool built-in audit logging features. You can read about them on this doc page: Audit Logging For today’s tip […]
When managing a multi-tenant or automation-heavy PostgreSQL-compatible database like YugabyteDB, a common administrative challenge is ensuring that newly created databases consistently apply […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
In the previous YugabyteDB Tip, Row-Level Security Is a Predicate, Not a One-Time Check, we looked at an important principle: Think of […]
YugabyteDB YSQL uses the PostgreSQL Audit Extension (pgAudit) to provide detailed session and/or object audit logging via YugabyteDB YB-TServer logging. Audit records […]
The YugabyteDB YSQL API supports column-level encryption via the Postgres extension called pgcrypto. The pgcrypto module in PostgreSQL is a powerful tool […]
Postgres 14 introduced a set of predefined roles that provide access to certain, commonly needed, privileged capabilities and information. One of those […]
YSQL uses PostgreSQL-style host-based authentication (HBA) rules to determine which clients can connect, which database users they can use, and which authentication […]
When working with role management in YugabyteDB (or PostgreSQL), it’s common to need a dump of all roles and their associated privileges […]
In the YBA Platform, only user-created YCQL keyspaces can currently be backed up and restored; system keyspaces and tables, including roles and […]
Organizations in regulated sectors such as government, defense, finance, and healthcare often face strict requirements around cryptography, including adherence to FIPS 140‑2 […]
In PostgreSQL, disabling login for the default postgres role can be a common hardening step. In YugabyteDB, that same idea can go […]
Enterprise vulnerability scanners are very good at producing lists of CVEs. The harder questions usually come next: ● Does this vulnerability actually […]
YugabyteDB supports the PostgreSQL pgcrypto extension for column-level encryption. But encrypting a column raises an interesting sizing question: How much larger does […]
Storing sensitive information like Social Security Numbers (SSNs) securely is non-negotiable… but what happens when you need to search or index that […]
One of the most common questions when working with PostgreSQL-style authentication is: “Which pg_hba.conf rule actually allowed this connection?” If you’ve ever […]
Three-Part Series: Tracking Data Changes in YugabyteDB Keep the Current and Previous Values in the Same YugabyteDB Row Build a Reusable Field-Level […]
In YugabyteDB’s YSQL api, securing columns from users or providing access to only a limited set of columns can be implemented via […]
Security isn’t a “nice to have”… it’s existential. Whether you’re a bank bound by FFIEC/GLBA and PCI DSS, a fintech or payments […]
The YugabyteDB SQL shell ysqlsh provides a CLI for interacting with YugabyteDB using YSQL. There is not a flag available on the command […]
Organizations handling sensitive data must ensure that personally identifiable information (PII) is anonymized or pseudonymized to protect user privacy and avoid legal […]
In YugabyteDB, each tablet server hosts one or more tablets... the basic unit of data distribution and replication. When troubleshooting, you often […]
In the YugabyteDB Tip “Part 1: Let Non-Superusers Query yb_local_tablets in YugabyteDB” we showed how to wrap the yb_local_tablets system function in […]
Enabling encryption in transit is critical for securing your YugabyteDB cluster. It ensures that all communication between nodes (Masters ↔ Masters on […]
If you try to reset a user password as a non-authenticated user in YCQL, you’ll get an error – even if logged […]
Row-Level Security (RLS) is a powerful way to enforce tenant isolation directly inside YugabyteDB. A typical multi-tenant policy might look like this: […]
A common multi-tenant design is to use a shared application database role and identify the active tenant with a custom YSQL configuration […]
The YugabyteDB SQL shell ysqlsh provides a CLI for interacting with YugabyteDB using YSQL. There is not a flag available on the command […]
Organizations using YugabyteDB Anywhere (YBA) with enterprise identity providers such as Keycloak sometimes want to go beyond standard role mapping and make […]
Client certificates are a common part of securing YugabyteDB clusters, especially when encryption in transit is enabled and pg_hba.conf is used to […]
If you use YSQL Connection Manager (YCM) and recently upgraded from YugabyteDB 2024.2 to 2025.1, you may have encountered a confusing failure: […]
PostgreSQL Compatibility
68 Tips
PostgreSQL compatibility, PG15, extensions, catalog behavior, and migration topics.
Catalog
13 Tips
YugabyteDB’s cost-based optimizer (CBO) is a big deal. Turn it on, keep stats fresh, and your plans get smarter, closer to PostgreSQL […]
Introduction In YugabyteDB, the catalog version is a small but critical number that ensures all nodes in a cluster are in sync […]
We learned in a previous YugabyteDB Tip that we can Consolidate Data From YB Catalog Tables From All Nodes To One Node. […]
System catalogs, also referred to as system tables or system views, are essential to the internal structure and management of the database, […]
When tuning YSQL queries with EXPLAIN (ANALYZE, DIST), you will often notice that the first execution performs several catalog reads while later […]
In PostgreSQL-compatible databases like YugabyteDB, the system catalogs are packed with metadata about tables, functions, privileges, and more. But not all system […]
Tablespaces in YugabyteDB give users fine-grained control over where data lives, enabling better performance tuning, fault isolation, and cost management. By mapping […]
YSQL relies heavily on PostgreSQL’s system catalog cache, commonly called the catcache, to avoid repeatedly reading metadata from system catalog tables such […]
Not long ago, a Yugabyte Tip shared a neat trick: how to display a table’s table_id in YSQL by calling yb_table_id(oid) inside […]
When a new YSQL backend session executes a query for the first time, PostgreSQL must read metadata from system catalog tables In […]
YugabyteDB delivers the best of both worlds: horizontal scalability and global distribution, powered by a PostgreSQL-compatible query layer (YSQL). But even in […]
Distributed databases change the cost model of metadata access. In PostgreSQL, system catalog tables live locally on disk and are typically cached […]
YSQL catalog cache preloading can reduce the catalog reads performed when a new PostgreSQL backend processes its first queries. However, on older […]
Extensions
32 Tips
Follow-up tip: This tip builds on Preserve Regional Index Tablespaces with pg_partman Templates, which demonstrates how a custom pg_partman template can preserve […]
PostgreSQL extensions provide a way to extend the functionality of a database by bundling SQL objects into a package and using them […]
Validating p95 / p99 Latency Without PostGIS (Part 3) In Part 1 of this series, Geospatial Queries in YugabyteDB Without PostGIS, we […]
Case-insensitive search is a common requirement for usernames, email addresses, product names, search boxes, and many other application fields. A previous YugabyteDB […]
In Part 1 of this series, What Is RAG? From PostgreSQL pgrag to Distributed RAG with YugabyteDB pg_dist_rag, we looked at Retrieval-Augmented […]
In Part 1 of this series, we introduced Retrieval-Augmented Generation (RAG) and looked at why YugabyteDB takes a distributed approach with pg_dist_rag. […]
The YugabyteDB YSQL API supports column-level encryption via the Postgres extension called pgcrypto. The pgcrypto module in PostgreSQL is a powerful tool […]
postgres_fdw is incredibly useful when you need to query a remote PostgreSQL-compatible database from YugabyteDB. But there is one performance rule you […]
Are you migrating from Oracle to YugabyteDB? If so, Orafce is a very useful PostgreSQL Extension that allows you to implement some […]
In PostgreSQL-compatible databases like YugabyteDB, the system catalogs are packed with metadata about tables, functions, privileges, and more. But not all system […]
In PostgreSQL-compatible databases like YugabyteDB, object resolution—whether for functions, tables, or types—relies on the search_path setting. If an object (like a function) […]
Upgrading YugabyteDB from v2024.2 to v2025.2 includes a YSQL major-version upgrade from PostgreSQL 11 to PostgreSQL 15. YugabyteDB Anywhere runs a precheck […]
During a YugabyteDB PostgreSQL 15 upgrade pre-check, you may encounter an error similar to: Performing Consistency Checks on Old Live Server SQL […]
The UUID data type represents Universally Unique Identifiers (UUIDs). A UUID is a sequence of 32 hexadecimal digits separated by hyphens (8 digits […]
This post is the implementation companion to Part 1: Geospatial Queries in YugabyteDB Without PostGIS. In that tip you learned how geospatial […]
Many applications rely on geospatial data for things like: ● “Find all points within X miles” ● “Which records fall inside this […]
YugabyteDB supports the PostgreSQL pgcrypto extension for column-level encryption. But encrypting a column raises an interesting sizing question: How much larger does […]
If you come from PostgreSQL, pgstattuple is one of those extensions that feels like it should be part of your regular toolbox. […]
Many geospatial applications built on PostgreSQL use PostGIS queries that combine: ● ST_DWithin() to filter objects within a radius ● bounding-box checks […]
Inroduction Many PostgreSQL applications that use PostGIS construct geographic points like this: ST_SetSRID(ST_MakePoint(lon, lat), 4326) This pattern is extremely common in location-based […]
PostgreSQL provides an elegant way to handle problems such as overlapping reservations, duplicate-event windows, or effective-date ranges. A typical design uses a […]
Version scope: This tip applies to YugabyteDB v2025.1 and later, where the YSQL API is based on PostgreSQL 15. For YugabyteDB v2024.2 […]
🧭 Introduction With PostgreSQL 18 introducing native uuidv7(), time-ordered UUIDs are finally going mainstream. But if you’re running YugabyteDB (or older PostgreSQL […]
PostgreSQL extensions provide a way to extend the functionality of a database by bundling SQL objects into a package and using them […]
We learned in a previous tip that we can ENABLE ORACLE’S COMPATIBILITY FUNCTIONS AND PACKAGES IN YSQL. That’s awesome! But what are […]
pg_stat_monitor is a Query Performance Monitoring tool for PostgreSQL and supported in YugabyteDB. It collects performance statistics and provides query performance insights […]
Just as a single Postgres server process can manage multiple databases at the same time, Yugabyte allows you to create and manage […]
In the first three parts of this series, What Is RAG? From PostgreSQL pgrag to Distributed RAG with YugabyteDB pg_dist_rag, we progressively […]
The Postgres extension hstore implements a new data type (HSTORE) for storing key-value pairs in a single value. The hstore data type […]
DuckDB is incredible for high-speed, local OLAP analytics. It is lightweight, fast, embeddable, and designed for analytical queries. It also includes a […]
A customer recently asked a great question: “Is there a session setting in PostgreSQL or YugabyteDB to make query hints ignored?” Yes, […]
Retrieval-Augmented Generation, better known as RAG, has become one of the most common patterns for building AI applications that need to answer […]
Migration
8 Tips
In a previous YugabyteDB Tip, Simulate Synonyms in YSQL, we showed how changing the search_path lets you query objects in different schemas […]
If you’ve worked with Oracle, you’ve probably used SYS_CONTEXT to grab runtime environment information—things like the current user, client IP, or host […]
Using Entity Framework Core Code-First and you’re evaluating YugabyteDB? One of the first questions that comes up is: “Do we need to […]
When migrating PL/SQL code from Oracle to YugabyteDB’s PostgreSQL-compatible YSQL layer, one of the trickiest differences is exception handling. Oracle has its […]
Oracle developers often rely on explicit cursors to loop through result sets or to parameterize queries inside PL/SQL procedures. When migrating to […]
When moving Oracle partitions that omit a lower or upper bound, translate them to Postgres/YSQL using MINVALUE and MAXVALUE. Also remember that […]
If you’re migrating from Oracle and miss USER_TAB_PARTITIONS and ALL_TAB_PARTITIONS, you can recreate them in YugabyteDB with two simple views over the […]
If you’re migrating from Oracle to YugabyteDB, you may have run across the concept of orphaned indexes. In Oracle, there are views […]
Open Source
1 Tip
You are standing in a Distributed Cluster… In November 2025, Microsoft (through the Open Source Programs Office, Team Xbox, and Activision) open-sourced […]
PG15
3 Tips
When upgrading from a PostgreSQL 11-based YugabyteDB release to a PostgreSQL 15-based YugabyteDB release, the upgrade includes a PostgreSQL major-version upgrade phase. […]
During a YugabyteDB PostgreSQL 15 upgrade pre-check, you may encounter an error similar to: Performing Consistency Checks on Old Live Server SQL […]
A YSQL major-version upgrade is different from a normal YugabyteDB software upgrade. Moving from a PostgreSQL 11-based YugabyteDB release, such as the […]
Postgres15
2 Tips
YSQL (YugabyteDB Structured Query Language) supports two dedicated data types to store JSON (JavaScript Object Notation) data. JSON Stores JSON data as […]
YugabyteDB now supports foreign key references to partitioned tables…a PostgreSQL 12+ feature that brings referential integrity to partitioned parents. This is available starting […]
PostgreSQL Emulation
2 Tips
One of YugabyteDB’s core missions is to deliver the most PostgreSQL-compatible distributed SQL database in the world, combining the familiar PostgreSQL experience […]
YugabyteDB is a distributed SQL database built to scale out while maintaining compatibility with the PostgreSQL ecosystem. That compatibility is not just […]
System Tables
9 Tips
A YugabyteDB universe is comprised of exactly one primary cluster and zero or more read replica clusters. In YCQL we can display […]
In YCQL the DROP KEYSPACE statement is used remove a keyspace from the system. An error is raised if the specified keyspace […]
In a distributed SQL database like YugabyteDB, understanding where data actually lives is just as important as understanding the schema itself. Once […]
In YSQL you can display the structure of a table, including indexes and constraints, by issuing the d table_name meta-command. yugabyte=# CREATE […]
In YSQL you can query the system table INFORMATION_SCHEMA.COLUMNS to list details about each of the columns in table. Example: yugabyte=# CREATE […]
Tablespaces in YugabyteDB provide a way to control how and where data is stored across a distributed cluster. By defining tablespaces with […]
Although it’s possible to add a primary key constraint to an existing table with the ALTER TABLE ADD CONSTRAINT command, it’s best […]
We learned in the YugabyteDB Tip View Metadata for YSQL/YCQL/System Tablets on a Server about the new (in YugabyteDB 2024.1) system view yb_local_tablets. […]
The use of secondary indexes can enhance database performance by enabling the database server to find rows faster. If you create too […]
Kubernetes & Deployment
5 Tips
Kubernetes, installation, deployment, infrastructure, and topology topics.
Deployment
1 Tip
In a multi-region YugabyteDB cluster, tablet leaders matter. Every strongly consistent read and every write is served by the tablet leader. A […]
Integration
2 Tips
YugabyteDB may not appear as a native, certified data source in every BI and reporting tool, but that does not mean those […]
Yugabyte’s docs show how to connect DataHub to YugabyteDB via the Postgres interface (YSQL) and even call out running the DataHub quickstart […]
Kubernetes
1 Tip
Part 1: Installing YugabyteDB on Kubernetes with Minikube Running a local multi-node YugabyteDB cluster on Kubernetes is an excellent way to test […]
WSL
1 Tip
WSL, or Windows Subsystem for Linux, offers Windows users the ability to operate a Linux environment directly within their Windows system. By […]
AI, RAG & Vector Search
9 Tips
AI integrations, pgvector, vector search, RAG, and related application patterns.
AI
8 Tips
🌍 The Problem: Search is Still… Dumb Most application search still relies on: ● LIKE '%term%' ● exact keyword matching ● brittle […]
In Part 1 of this series, What Is RAG? From PostgreSQL pgrag to Distributed RAG with YugabyteDB pg_dist_rag, we looked at Retrieval-Augmented […]
In Part 1 of this series, we introduced Retrieval-Augmented Generation (RAG) and looked at why YugabyteDB takes a distributed approach with pg_dist_rag. […]
In the first three parts of this series, What Is RAG? From PostgreSQL pgrag to Distributed RAG with YugabyteDB pg_dist_rag, we progressively […]
AI coding assistants are useful, but they do not automatically know the best way to design schemas, indexes, transactions, or application patterns […]
Retrieval-Augmented Generation, better known as RAG, has become one of the most common patterns for building AI applications that need to answer […]
Vector search gets expensive fast. Without an index, every query has to compare your search embedding against every row in the table. […]
When working with vector search, dimension limits matter. Many embedding models fit comfortably inside 768, 1,024, or 1,536 dimensions. But some use […]
pgvector
3 Tips
Introduction Finding the right U.S. National Park to explore is often about vibes. Some people want jagged mountains and glaciers, others want […]
Vector search gets expensive fast. Without an index, every query has to compare your search embedding against every row in the table. […]
When working with vector search, dimension limits matter. Many embedding models fit comfortably inside 768, 1,024, or 1,536 dimensions. But some use […]
Vector
4 Tips
🌍 The Problem: Search is Still… Dumb Most application search still relies on: ● LIKE '%term%' ● exact keyword matching ● brittle […]
In the first three parts of this series, What Is RAG? From PostgreSQL pgrag to Distributed RAG with YugabyteDB pg_dist_rag, we progressively […]
Vector search gets expensive fast. Without an index, every query has to compare your search embedding against every row in the table. […]
When working with vector search, dimension limits matter. Many embedding models fit comfortably inside 768, 1,024, or 1,536 dimensions. But some use […]
Transactions & Consistency
13 Tips
Distributed transactions, isolation, consistency, clocks, and concurrency.
ACID Transactions
2 Tips
Introduction When building multi-region systems, it’s tempting to think: “We can just use a message bus like Kafka to handle concurrent writes […]
A common question from teams moving to YugabyteDB is: “Can we run a two-phase commit transaction across two databases in the same […]
Hybrid Logical Clock (HLC)
3 Tips
Distributed databases need a way to order events across nodes that don’t share a perfectly synchronized clock. YugabyteDB solves this problem with […]
TL;DR (for the impatient) ● VMware DRS and vMotion are optimized for stateless or loosely stateful workloads ● Temporary clock skew during […]
TL;DR Clock skew doesn’t corrupt data in YugabyteDB… but it will stop your cluster to protect correctness. This tradeoff is critical for […]
Read Committed
1 Tip
Transaction isolation is a fundamental concept for managing concurrent transactions in databases. The SQL-92 standard specifies four levels of transaction isolation, ranked […]
Transaction Isolation
2 Tips
Transaction isolation is a fundamental concept for managing concurrent transactions in databases. The SQL-92 standard specifies four levels of transaction isolation, ranked […]
Transaction isolation is foundational to handling concurrent transactions in databases. The SQL-92 standard defines four levels of transaction isolation (in decreasing order […]
Transactions
6 Tips
When working with distributed databases like YugabyteDB, writing safe, performant, and transactionally consistent SQL can get tricky — especially when your app […]
YugabyteDB has always supported multiple transaction execution paths under the hood, but determining which path a statement actually used often required inference, […]
When you run a DML statement like an INSERT, UPDATE or DELETE, some number of rows are affected. Databases have various ways […]
DuckDB is incredible for high-speed, local OLAP analytics. It is lightweight, fast, embeddable, and designed for analytical queries. It also includes a […]
A customer recently asked a great question: “Is there a list of errors that are safe to retry on the client?” They […]
YugabyteDB supports a rich set of multi-region deployment topologies. The predominant deployments include: Default synchronous replication across regions Geo-partitioning to pin data to different […]
Data Movement & Utilities
9 Tips
Data generation, import/export, migration helpers, and data-processing utilities.
Data Export
3 Tips
🐥 What’s DuckDB, and Why Pair It with YugabyteDB? If you haven’t heard of it yet, DuckDB is like the SQLite of […]
When exporting data to a file in YSQL I avoid using printable characters (commas, new-lines, pipe symbols, etc.) as field/record separators because […]
When working with role management in YugabyteDB (or PostgreSQL), it’s common to need a dump of all roles and their associated privileges […]
Data Generation
1 Tip
The generate_series YugabyteDB SQL built-in function is a set returning function in that it can return more than one row. It comes […]
Data Load
4 Tips
When inserting a large volume of rows into a YSQL table, the performance you get depends heavily on the SQL pattern you […]
You can use the YCQL COPY command to load data from a CSV file into a table. The default expected delimiter of […]
A foreign key in YSQL is used to maintain the referential integrity of data between two tables: values in columns in one […]
We can use the COPY statement to load data into tables from files. When loading from very large files, starting in YugabyteDB […]
DuckDB
2 Tips
🐥 What’s DuckDB, and Why Pair It with YugabyteDB? If you haven’t heard of it yet, DuckDB is like the SQLite of […]
DuckDB is incredible for high-speed, local OLAP analytics. It is lightweight, fast, embeddable, and designed for analytical queries. It also includes a […]
Tips, Tools & Extras
18 Tips
Workarounds, debunking, useful experiments, and lighter YugabyteDB content.
Debunk
1 Tip
YugabyteDB operates with a two-server architecture: YB-TServers handle the data, while YB-Masters manage the metadata. But don’t be misled into thinking that […]
General
1 Tip
🎯 Why this Tip? Blockchain and Distributed Ledger Technologies (DLTs) have exploded into mainstream discussions… even in enterprise data engineering. Even though […]
Just for fun
14 Tips
🌍 Introduction Most databases stop at multi-AZ or multi-region deployments. Some push further into multi-cloud architectures. But what happens when you need […]
I used to have fun with the amusing old Linux command Cowsay which inserts any input into a word bubble and draws an […]
According to the YugabyteDB documentation, the largest value that can be stored in an integer is 2,147,483,647. This is because for non-qualified […]
A long time ago a database developer asked me how she could produce a list of all table columns in the database […]
When most people think about databases, they think about storing business transactions, customer activity, or financial records that span days, years, or […]
Why this tip exists Sometimes you just want to prove it’s possible: ● “Can YugabyteDB read data from SQL Server?” ● “Can […]
A regular expression is a character sequence that is an abbreviated definition of a set of strings (a regular set). Regular Expressions have […]
There’s an age old question asking is it better to store images offline in a file system or online inside a database […]
Pi Day 2024 is today (Thursday, March 14, 2024)! We all know that the irrational number π is a mathematical constant that […]
When I first heard of the company Yugabyte I thought the word itself was a measure of digital storage capacity like zettabyte […]
Sometimes a query result looks wrong at first glance… until you realize YugabyteDB is doing exactly what the type system told it […]
The yottabyte holds the title of being the largest unit endorsed by the International System of Units (SI). Clocking in at approximately […]
YugabyteDB supports a rich set of multi-region deployment topologies. The predominant deployments include: Default synchronous replication across regions Geo-partitioning to pin data to different […]
You are standing in a Distributed Cluster… In November 2025, Microsoft (through the Open Source Programs Office, Team Xbox, and Activision) open-sourced […]
test
1 Tip
To manage YugabyteDB, you can use yugabyted. yugabyted acts as a parent server across the YB-TServer and YB-Masters servers. yugabyted also provides […]
Work-Arounds
1 Tip
Multi-column partitioning can be a powerful tool for organizing data. In databases like Oracle, you can define a LIST partition on multiple […]
All Topics A–Z
Looking for a specific WordPress category?
Browse every YugabyteDB Tips category alphabetically.
2025.1
1
ACID Transactions
2
Active Session History
2
aeon
4
Aggregates
2
AI
8
AI-Powered Search
1
analyze
9
API
231
Application Retry
1
Asynchronous Notifications
1
Audit
12
auto analyze
1
Automatic Tablet Splitting
3
Automation
6
AWS
3
Azure
1
Backfill
2
Backups
13
Bash
1
Benchmark
3
Bloom Filters
1
Bucket-Based
2
Built-in Functions
5
Cache
2
Catalog
13
Catalog Caching
5
CBO
5
cbo_stat_dump
2
CDC
1
Claude
1
Cleanup
3
CLI
52
Clock Synchronization
4
Cluster Load Balancer
1
Collections
3
Colocation
2
Command Line
14
Compaction
2
Config Params
10
Configuration
14
Connection
14
Connection Manager
5
Constraints
4
Cost Based Optimizer
2
Covering Index
1
cql
4
CTE
1
CVE
1
Data Export
3
Data Generation
1
Data Load
4
Data Model
1
Data Types
22
Databases
2
DDL
36
Debunk
1
Default
1
Dependency
1
Deployment
1
DML
13
DocDB
3
Domains
1
Download
1
Drivers
9
DuckDB
2
Duplicate Indexes
4
Encryption
2
Encryption
2
Entity Framework Code-First
1
Event Triggers
1
Exception Handling
1
Explain Plans
9
Extensions
32
Fast Path
1
Follower Reads
2
Foreign Data Wrapper
2
Foreign Keys
2
General
1
Generated Columns
1
Geospatial Queries
6
GFlags
16
GIN INDEX
2
Global Database
2
Go
1
GUC
9
GUC Parameters
9
Hash Sharding
1
HBA Rules
1
High Availibility
2
hints
2
HNSW
1
Hot Spots
5
Hybrid Logical Clock (HLC)
3
IBM Cognos Analytics
1
Identity
1
Index Consistency
1
Indexes
55
Inserts
1
Install
9
Instant Database Clone
3
Integration
2
invalid
1
Istio
2
Jaspersoft
1
JDBC
5
JSON
3
JSONB
8
jsonb_set
2
Just for fun
14
Kafka
1
Kubernetes
1
Kubernetes
2
Latency-optimized geo-partitioning
5
Leaderless
1
Like
1
LIMIT
1
LISTEN/NOTIFY
2
Load Balance
3
Locality-optimized geo-partitioning
1
Locality-optimized geo-partitioning
5
Locks
3
Log Files
4
Logging
5
Materialized View
2
Memory Usage
6
meta-commands
7
Meta-Data
5
Metrics
1
Migration
8
NaN
1
Negative Caching
2
Network
7
Npgsql
1
Numeric
2
OLAP
1
Open Source
1
Operating System
4
Oracle
6
Pagination
1
Partial
1
Partitioning
15
Password
2
Performance
78
pg_dist_rag
4
pg_hint_plan
1
pg_partman
2
pg_trgm
1
PG15
3
pgcrypto
2
pgrag
1
pgvector
3
PITR
4
Planner
1
Platform
1
PLPGSQL
2
Ports
1
PostGIS
6
postgres_fdw
1
Postgres15
2
PostgreSQL Emulation
2
Preferred Region
1
Preferred Zone
1
Prepared Statements
3
Presplit
1
Primary Key
3
Private Link
3
Privileges
1
Prometheus
2
PTP
2
Python
2
RAG
4
Range Sharding
5
Read Committed
1
Read Only
2
Read Only Access
2
Read Replicas
1
Read Restart
1
Recover
3
Releases
3
Replication
2
Resilence
5
Retrieval-Augmented Generation
4
Roles
1
Row Count
5
Row Counts
3
Row Level Security (RLS)
3
Row-Level Geo-Partitioning
5
SEARCH_PATH
1
Security
31
SELinux
1
Sequence
5
Sessions
1
Sharding
5
Sizing
2
Smart Driver
5
Snapshot
1
Snapshot
3
Sorage
1
SQL
7
SQL Functions
39
SQL Server
1
statistics
4
Statistics
5
Stored Procedures
23
Synonyms
1
synonyms
1
Syscache
2
System Tables
9
T-Server
1
Table Inheritance
1
table_id
1
table_id
1
Tablespace
10
Tablet Leaders
8
Tablets
15
Terraform
2
test
1
Timestamps
1
Tracing
1
Transaction Isolation
2
Transactions
6
Trigger
1
Trigram
1
TServer
4
TTL
1
Tuning
41
Types
1
Uncategorized
23
Unique Index
2
Upgrade
6
UUID
7
variables
2
vecotr
1
vector
1
Vector
4
Version
1
View
2
Views
4
VMware
1
WAL
1
work_mem
1
Work-Arounds
1
WSL
1
xCluster
3
xCluster Replication
4
XML
1
yb_rowid
1
yb-admin
4
yb-master
3
yb-ts-cli
2
yb-tserver
3
YBA
11
YCQL
32
ycqlsh
10
YSQL
201
ysql_dumpall
1
ysql_hba_conf_csv
1
ysql_hba.conf
1
ysqlsh
34
yugabyted
2
