3. What are the differences between Tantor SE 1C 18 and PostgreSQL 18#
3. What are the differences between Tantor SE 1C 18 and PostgreSQL 18 #
- 3.1. Helpful links
- 3.2. Core improvements
- 3.3. Additional Supplied Modules and Extensions
- 3.4. Additional Supplied Utilities
- 3.5. Tantor Additional Programs Distributed as Separate Packages
- 3.6. Additional External Modules Distributed as Separate Packages
- 3.7. Programmatic Interfaces for Various Languages
- 3.8. Release Notes
- 3.9. How to configure Tantor SE-1C parameters for 1C
3.1. Helpful links #
3.2. Core improvements #
64-bit transaction counter.
Logical replication between DBMS clusters using 32-bit and 64-bit transaction identifiers.
Optimized
pglzdata compression algorithm (~1.4 times).libpq compression.
Optimized replication recovery process (
fadviseon standby).Optimization for linear search for ARM64 architecture processors.
When sending the WAL to the standby server, a checksum of the data blocks is verified.
Increased informative value of diagnostic information:
Diagnostics of internal DBMS errors (
backtrace_on_internal_errorparameter).The informativeness of the DBMS server logs — the start messages contain additional diagnostic information.
The pg_controldata server application contains additional meta information about the edition and assembly to simplify the diagnosis of possible problems.
The maximum size of data in table cells supported by the pg_dump module is 2 GB.
Improved performance of operations involving temporary tables.
Enhanced pg_stat_statements for improved monitoring precision and performance:
Intelligent query normalization: system now masks temporary table and array names, enabling more accurate aggregation of statistics for structurally identical queries with varying parameters.
Sampling support: when enabled, sampling significantly reduces overhead under high load, minimizing the extension's impact on overall system performance.
Increased number of partitions in the shared buffers.
Improved planner behavior by default use of covering indexes with selectivity consideration.
enable_convert_exists_as_lateral_join setting, allowing the planner to convert
EXISTSsubqueries intoLATERAL SEMI JOINwhen possible for improve performance.Deferred allocation of temporary tables using the enable_delayed_temp_file setting.
Improved planner behavior using the Join Predicate Pushdown technique.
Precision statistics collection. Enables fine-grained control over statistics sampling for individual table columns using the
ALTER TABLE ... ALTER COLUMN ... SET STAT MULTIPLIERcommand.Support for extensions and data types for compatibility with 1C.
Optimized operation of
ANALYZEcommand for wide tables.Optimized grouped queries typical for “Month-End Closing” operations in 1C:ERP.
Detailed computation of planner cost estimates for sort operations using the enable_detailed_sort_cost setting.
Ability to skip catalog record locks for temporary tables when they are not required, reducing overhead when working with such objects.
The default value of the jit parameter has been changed to
off. This improves performance.Enable_filter_predicates_reordering parameter, which allows to speed up the execution of queries with various scan types by optimizing the filter application order: the most selective conditions are checked first.
Default_statistics_target_temp_tables parameter to control the accuracy of temporary tables statistics, which, in combination with default_statistics_target, provides independent configuration of the level of detail in statistics for permanent and temporary tables.
Optimization for queries with subquery disjunction (constructions like
WHERE EXISTS(...) OR EXISTS(...)) using the enable_or_expansion and or_expanded_other_disjuncts_cost_limit parameters.Enable_pgstat_for_temp_rel parameter, which allows to disable the collection of statistics on temporary tables in the general
pg_stathash table.Expanded parallel query execution support using enable_parallel_insert parameter.
The ability to change the start time of streaming replication using the wal_receiver_start_at parameter.
The ability to partially perform aggregation before joining tables, followed by finalizing after the connection is completed using the enable_eager_aggregate parameter. This allows you to reduce the amount of data processed and choose a more efficient execution plan.
The ability to partially perform aggregation before joining tables, followed by finalizing after the connection is completed using the enable_eager_aggregate parameter. This allows you to reduce the amount of data processed and choose a more efficient execution plan.
The ability to scan temporary tables in parallel using the extended_parallel_processing and write_page_cost parameters.
The ability to work with temporary tables on a physical replica using the enable_temp_table_on_replica parameter.
The ability to use Compression Storage Manager (CSM) with database pages at the storage manager level Tantor SE-1C.
3.3. Additional Supplied Modules and Extensions #
auto_dump - helps you to capture a self-contained reproduction of problematic queries that run in production (e.g., from 1C).
credcheck - provides few general credential checks, which will be evaluated during the user creation, during the password change and user renaming. By using this extension, we can define a set of rules to allow a specific set of credentials, and a set of rules to reject a certain type of credentials. This extension is developed based on the PostgreSQL's check_password_hook hook.
dbcopies_decoding - supports the database copy mechanism and data accelerator.
fasttrun - provides transaction unsafe function to truncate temporary tables without growing pg_class size. This module is required for 1C Enterprise support. Fast truncate operation is not transactional, so its results cannot be rolled back and become immediately visible in all sessions regardless of isolation level.
fulleq - provides additional equivalence operator for compatibility with Microsoft SQL Server. This module is required for 1C Enterprise support.
hypopg - adds support for hypothetical_indexes. A hypothetical or virtual index is an index that does not actually exist. Thus, no CPU, disk, or any other resource is required to create. It is useful to know if certain indexes can improve performance for problematic queries, as you can know if Tantor will use those indexes or not without having to spend resources creating them.
mchar - designed to improve 1C Enterprise support, most popular Russian CRM and ERP system. It implements types MCHAR and MVARCHAR, which are bug-to-bug compatible with MS SQL CHAR and VARCHAR respectively. Additionally, these types use the ICU library for comparison and case conversion, so their behavior is identical across different operating systems. Tantor DBMS also includes citext extension which provides types similar to MCHAR. But this extension doesn’t emulate MS-SQL behavior concerning end-of-value whitespace.
online_analyze - performs activation of statistic collection right after INSERT/UPDATE/DELETE/SELECT INTO for involved tables.
page_repair - designed to repair separate corrupted pages using backup data from the replication server. It allows saving reparation time as it does not require reparation of all data, but separate pages.
pg_cron - represents a cron-based job scheduler working within the database as an extension. It uses the same syntax as regular cron, but it allows scheduling Tantor DBMS commands directly from the database.
pg_csm - provides a diagnostic estimation of compressibility of tables and indexes that use the Compression Storage Manager.
pg_hint_plan - allows configuring plans of SQL queries execution using so called "hints" in SQL comments. This gives an opportunity to compensate the scheduler errors occurring in critical cases.
pg_query_id - allows to manipulate aspects of query id computation.
pg_repack - removes bloat from tables and indexes, and optionally restores the physical order of clustered indexes. Unlike CLUSTER and VACUUM FULL it works online, without holding an exclusive lock on the processed tables during processing.
pg_sample_profile - provides sample-based profiling of database activity.
pg_stat_advisor - allows to analyze query performance and create additional statistics to improve query plan.
pg_stat_kcache - gathers statistics about real reads and writes done by the filesystem layer.
pg_store_plans - provides the means to keep track of the execution plan statistics for all SQL statements executed by the Tantor server.
pg_trace - provides an opportunity for in-depth analysis and profiling of SQL queries, which is especially relevant for users of the 1C platform.
pg_wait_sampling - provides information about current waiting event for a certain process. However, to collect a descriptive statistics of server behaviour a user must repeatedly collect the current waiting event. This module represents an extension for collecting sample statistics of waiting events that prevent needless sampling of the current event waiting.
pgaudit - provides detailed session and/or object audit logging via the standard Tantor DBMS logging facility. The goal of the pgAudit is to provide Tantor DBMS users with capability to produce audit logs often required to comply with government, financial, or ISO certifications.
pgauditlogtofile - is an addon to pgAudit than will redirect audit log lines to an independent file, instead of using PostgreSQL server logger. This will allow us to have an audit file that we can easily rotate without polluting server logs with those messages. Audit logs in heavily used systems can grow very fast. This extension allows to automatically rotate the files based in a number of minutes.
plantuner - allows to use planner hints.
transp_anon (transparent anonymization) - is an extension to mask or replace personally identifiable information or commercially sensitive data from a Tantor SE-1C database.
3.4. Additional Supplied Utilities #
data_generator — generates fake data for testing and development purposes. It supports various data types and allows customization of generated data through templates.
pg_diag_setup — automates the configuration of Tantor SE-1C performance diagnostics extensions such as
pg_store_plans,pg_stat_statements,pg_stat_kcache,auto_explain,pg_buffercache, and others. This simplifies the integration of database monitoring systems.pgcompacttable — reduces the size of bloated tables and indexes without using heavy locks. It is developed to reorganize data in tables and rebuild indexes in order to reclaim disk space without impacting database performance.
pgcopydb — automates running pg_dump | pg_restore between two running Postgres servers. To make a copy of a database to another server as quickly as possible, one would like to use the parallel options of pg_dump and still be able to stream the data to as many pg_restore jobs.
slru_upgrader — automatically renames the configuration parameters related to the SLRU buffers during a major version upgrade from Tantor SE-1C 15. This utility helps to avoid the issue of the server failing to start after the upgrade due to the presence of old parameter names in the
postgresql.conffile.
3.5. Tantor Additional Programs Distributed as Separate Packages #
Tantor Platform — full-featured modular platform for administration and monitoring of Tantor RDMS and most PostgreSQL based clusters. The platform simplifies daily RDBMS operation with significant impact on the RDBMS management simplicity. The software functionality includes: smart and simple user interface, cluster automatic adaptive tuning, system overview, alerts and monitoring, automatic health checks and schema audit, maintenance tasks resolution through the GUI, advanced query profiling, and administering multiple servers in one place.
pg_anon — a standalone Python program to work with Tantor RDMS or PostgreSQL based DB to perform data masking and anonymization during data migration between production and test environments.
pg_cluster — an ansible playbook for PostgreSQL high availability cluster on Patroni.
pg_configurator — a PostgreSQL configuration tool.
3.6. Additional External Modules Distributed as Separate Packages #
ldap2pg — a tool that automates the synchronization of PostgreSQL roles and their privileges from an LDAP directory (or a YAML config), creating, updating, and dropping roles to match your enterprise directory.
mysql_fdw — a PostgreSQL Foreign Data Wrapper that lets Postgres query and manipulate tables on a remote MySQL server as if they were local, supporting SELECT/INSERT/UPDATE/DELETE and push-down optimizations.
pg_timetable — an advanced, standalone PostgreSQL job scheduler that runs SQL, system programs, and built-in tasks on custom cron or interval schedules with support for chained workflows and database-driven configuration.
pgbouncer — a lightweight PostgreSQL connection pooler that sits between clients and the database to manage and reuse backend connections efficiently, reducing overhead and improving concurrency for high-load workloads.
tds_fdw — a PostgreSQL Foreign Data Wrapper that lets PostgreSQL connect to and query databases using the Tabular Data Stream (TDS) protocol, such as Microsoft SQL Server and Sybase, exposing their tables as foreign tables.
wal-g — a tool for making encrypted, compressed Tantor SE-1C backups (full and incremental) and push/fetch them to/from storage without saving it on your filesystem.
3.7. Programmatic Interfaces for Various Languages #
Tantor SE-1C provides a wide range of drivers and libraries to interact with the database from various programming languages and environments. The following sections outline the main interfaces and their respective tools.
3.7.1. C/C++ #
libpq: The primary C library for Tantor SE-1C client programs. It allows sending queries, receiving results, and managing connections.
libpqxx: A C++ wrapper over libpq, offering a more modern and user-friendly interface for C++ developers.
3.7.2. Java/JDBC #
PostgreSQL JDBC Driver: The official JDBC driver that enables Java applications to interact with Tantor SE-1C databases using the standard JDBC API.
3.7.3. .NET #
Npgsql: An open-source .NET Data Provider for PostgreSQL. It allows .NET applications to use ADO.NET to connect to Tantor SE-1C, run queries, and retrieve data.
3.7.4. ODBC #
psqlODBC: The official PostgreSQL ODBC driver providing connectivity for applications and tools using ODBC interfaces.
3.7.5. Perl #
DBD::Pg: A Perl DBI-compliant module for Tantor SE-1C. It integrates seamlessly with the Perl DBI framework for database interactions.
3.7.6. Python #
psycopg2/psycopg: Widely used Python adapters implementing the Python DB-API specification. They provide a robust and efficient way to execute queries, handle transactions, and manage connections.
pg8000: A pure-Python alternative adapter that also supports the DB-API standard.
3.7.7. Ruby #
pg gem: The official Ruby driver for PostgreSQL, providing a native interface to execute queries and process results.
3.7.8. Tcl #
pgtcl/pgtcl-ng: Tcl extensions enabling connections to Tantor SE-1C, execution of queries, and management of query results within Tcl scripts.
3.8. Release Notes #
The first release of Tantor SE-1C is 18.3.0.
Significant changes can be found on the related page.
All other changes see in Release Notes.