diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 7efc819..f7d3f6e 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -14323,31 +14323,95 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
   </indexterm>
 
   <para>
-   <productname>PostgreSQL</productname> includes several functions to generate a UUID.
+	<productname>PostgreSQL</productname> provides functions for generating 
+	Universally Unique Identifiers (UUIDs) as defined by 
+	<ulink url="https://datatracker.ietf.org/doc/html/rfc9562">RFC 9562</ulink>. 
+	This section details the UUID functions included in the core distribution.
+  </para>
+
+  <para>
+   The <xref linkend="uuid-ossp"/> module provides additional functions that
+   implement other standard algorithms for generating UUIDs.
+  </para>
+
+  <para>
+   <productname>PostgreSQL</productname> also provides the usual comparison 
+   operators shown in <xref linkend="functions-comparison-op-table"/> for
+   UUIDs.
+  </para>
+
+  <sect2 id="functions-generating-uuidv7">
+   <title>Generating Version 7 UUIDs</title>
+
+<synopsis>
+<function>uuidv7</function> (<optional> <parameter>offset</parameter> 
+<type>interval</type> </optional>) <returnvalue>uuid</returnvalue>
+</synopsis>
+
+   <para>
+	The <function>uuidv7()</function> function is designed as the preferred 
+	method for generating primary keys, offering an alternative to integer data 
+	types backed by sequence generators.
+   </para>
+   
+   <para>
+	The function returns a version 7 UUID, which includes a UNIX timestamp with 
+	millisecond precision, a 12-bit sub-millisecond timestamp, and a random 
+	component. This function can accept optional <parameter>offset</parameter> 
+	parameter of type <type>interval</type> which is added to the internal 
+	timestamp.
+   </para>
+
+   <para>
+	Monotonically increasing identifiers are generated even if the system clock 
+	jumps backward, if access to the system clock is unavailable, or if UUIDs 
+	are generated at a very high frequency, due to the internal timestamp 
+	functioning as a counter to maintain order.
+   </para>
+
+   <para>
+	If the <parameter>offset</parameter> parameter results in a timestamp 
+	overflow or a negative timestamp, an adjusted timestamp value is 
+	automatically used. The timestamp behaves like a ring buffer: when the 
+	maximum value is exceeded, it wraps around to the minimum value. Similarly, 
+	if the absolute value of the negative <parameter>offset</parameter> exceeds 
+	the time elapsed since 00:00:00 UTC on 1 January, 1970, the timestamp wraps 
+	around to the maximum value.
+   </para>
+
+  </sect2>
+     
+  <sect2 id="functions-generating-uuidv4">
+   <title>Generating Version 4 UUIDs</title>
+
 <synopsis>
 <function>gen_random_uuid</function> () <returnvalue>uuid</returnvalue>
 <function>uuidv4</function> () <returnvalue>uuid</returnvalue>
 </synopsis>
+
+   <para>
    These functions return a version 4 (random) UUID.
-<synopsis>
-<function>uuidv7</function> (<optional> <parameter>shift</parameter> <type>interval</type> </optional>) <returnvalue>uuid</returnvalue>
-</synopsis>
-    This function returns a version 7 UUID (UNIX timestamp with millisecond
-    precision + sub-millisecond timestamp + random). This function can accept
-    optional <parameter>shift</parameter> parameter of type <type>interval</type>
-    which shift internal timestamp by the given interval.
-  </para>
+   </para>
+   
+   <para>
+	They are not recommended for generation of primary keys.
+   </para>
+
+  </sect2>
+    
+  <sect2 id="functions-extracting-data-from-uuid">
+   <title>Extracting Data from UUIDs</title>
 
   <para>
-   The <xref linkend="uuid-ossp"/> module provides additional functions that
-   implement other standard algorithms for generating UUIDs.
+There are also two functions to extract data from UUIDs:
   </para>
 
-  <para>
-   There are also functions to extract data from UUIDs:
 <synopsis>
-<function>uuid_extract_timestamp</function> (uuid) <returnvalue>timestamp with time zone</returnvalue>
+<function>uuid_extract_timestamp</function> (uuid) <returnvalue>timestamp with 
+time zone</returnvalue>
 </synopsis>
+
+  <para>
    This function extracts a <type>timestamp with time zone</type> from UUID
    version 1 and 7.  For other versions, this function returns null.  Note that
    the extracted timestamp is not necessarily exactly equal to the time the
@@ -14355,22 +14419,195 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
    UUID.
   </para>
 
-  <para>
 <synopsis>
-<function>uuid_extract_version</function> (uuid) <returnvalue>smallint</returnvalue>
+<function>uuid_extract_version</function> (uuid) 
+<returnvalue>smallint</returnvalue>
 </synopsis>
+
+  <para>
    This function extracts the version from a UUID of the variant described by
-   <ulink url="https://datatracker.ietf.org/doc/html/rfc9562">RFC 9562</ulink>.  For
-   other variants, this function returns null.  For example, for a UUID
+   <ulink url="https://datatracker.ietf.org/doc/html/rfc9562">RFC 9562</ulink>. 
+   For other variants, this function returns null. For example, for a UUID
    generated by <function>gen_random_uuid</function>, this function will
    return 4.
   </para>
 
-  <para>
-   <productname>PostgreSQL</productname> also provides the usual comparison
-   operators shown in <xref linkend="functions-comparison-op-table"/> for
-   UUIDs.
-  </para>
+  </sect2>  
+  
+  <sect2 id="functions-uuid-type-choice">
+   <title>Deciding Whether and Which UUID to Use</title>
+
+   <para>
+	UUIDs serve as unique identifiers. Alternatives include integer data types 
+	backed by a sequence generator. When choosing between them for primary keys, 
+	consider the following information.
+   </para>
+
+    <informaltable>
+     <tgroup cols="5">
+      <thead>
+       <row>
+        <entry>No.</entry>
+        <entry>Disadvantages or limitations of identifier types</entry>
+        <entry>uuidv4()</entry>
+        <entry>uuidv7()</entry>
+		<entry>uuidv7(<parameter>offset</parameter>)</entry>
+		<entry><type>identity</type> or <type>bigserial</type></entry>
+       </row>
+      </thead>
+
+      <tbody>
+
+       <row>
+        <entry>1.</entry>
+        <entry>Data merging necessitates key replacement; furthermore, 
+		maintaining key relationships requires disk space</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>2.</entry>
+        <entry>Exporting data to external information systems requires key 
+		replacement</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>3.</entry>
+        <entry>Synchronization is necessary for distributed generation across 
+		multiple processes (microservices)</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>	
+       </row>
+
+       <row>
+        <entry>4.</entry>
+        <entry>Lock contention arises from concurrent writes to the same table 
+		by multiple processes (microservices)</entry>
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+        <entry>NO (with several offsets)</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>5.</entry>
+        <entry>Identifier locality absence reduces performance and increases 
+		index size</entry>
+        <entry>YES</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+       </row>
+
+       <row>
+        <entry>6.</entry>
+        <entry>Identifier locality absence results in inefficient 
+		partitioning</entry>
+        <entry>YES</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+       </row>
+
+       <row>
+        <entry>7.</entry>
+        <entry>The record creation order is unknown for logging systems, 
+		time-series databases, debugging, and auditing</entry>
+        <entry>YES</entry>		
+        <entry>NO</entry>		
+        <entry>NO (with nondecreasing offsets)</entry>		
+        <entry>NO</entry>		
+       </row>
+
+       <row>
+        <entry>8.</entry>
+        <entry>The number of records within the table is disclosed</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>9.</entry>
+        <entry>The record creation date and time are disclosed</entry>
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+       </row>
+
+       <row>
+        <entry>10.</entry>
+        <entry>A longer identifier is utilized</entry>
+        <entry>YES</entry>		
+        <entry>YES</entry>		
+        <entry>YES</entry>		
+        <entry>NO</entry>		
+       </row>
+
+       <row>
+        <entry>11.</entry>
+        <entry>Identifier-based full-text search is ambiguous</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>12.</entry>
+        <entry>Erroneous accidental key matches occur</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+       <row>
+        <entry>13.</entry>
+        <entry>Valid keys can be generated maliciously</entry>
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>NO</entry>		
+        <entry>YES</entry>		
+       </row>
+
+      </tbody>
+     </tgroup>
+    </informaltable>
+
+   <para>
+	When generating identifiers simultaneously in several client sessions, the 
+	<function>uuidv7()</function> function does not guarantee monotonicity, 
+	although monotonicity is usually preserved in such a situation.
+   </para>
+
+   <para>
+	In real-world scenarios, the performance of keys generated by 
+	<function>uuidv7()</function> function is nearly equivalent to that of 
+	<type>identity</type> or <type>bigserial</type> type, significantly 
+	outperforming <function>uuidv4()</function>.
+   </para>
+
+   <para>
+	It is advisable to assess the performance of keys generated by different 
+	methods using the <xref linkend="pgbench"/> benchmarking utility, along 
+	with custom scenarios and script files tailored to your specific 
+	requirements.
+   </para>
+
+  </sect2>  
+  
  </sect1>
 
  <sect1 id="functions-xml">
