<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DbVisualizer</title>
    <description>The latest articles on DEV Community by DbVisualizer (@dbvismarketing).</description>
    <link>https://dev.to/dbvismarketing</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1018155%2F9a05440d-0b09-424f-9e49-fa152d1ede58.png</url>
      <title>DEV Community: DbVisualizer</title>
      <link>https://dev.to/dbvismarketing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dbvismarketing"/>
    <language>en</language>
    <item>
      <title>How to Configure MySQL HeatWave in Oracle Cloud</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 21 Sep 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-to-configure-mysql-heatwave-in-oracle-cloud-2c5b</link>
      <guid>https://dev.to/dbvismarketing/how-to-configure-mysql-heatwave-in-oracle-cloud-2c5b</guid>
      <description>&lt;p&gt;If you're using MySQL in Oracle Cloud, MySQL HeatWave provides a way to run transactional and analytical workloads from the same database. This article walks through the basic setup process, explains what the service offers, and highlights a few considerations before getting started.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes MySQL HeatWave Different?
&lt;/h2&gt;

&lt;p&gt;Many applications separate transactional databases from analytical platforms. HeatWave takes a different approach by combining both capabilities into a managed MySQL service. Some of the main features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for both OLTP and OLAP workloads.&lt;/li&gt;
&lt;li&gt;In-memory query execution for analytical operations.&lt;/li&gt;
&lt;li&gt;Built-in machine learning capabilities.&lt;/li&gt;
&lt;li&gt;Automatic scaling within Oracle Cloud Infrastructure.&lt;/li&gt;
&lt;li&gt;Less database administration thanks to Oracle's managed service.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows developers to focus on building applications while Oracle manages much of the underlying database infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before You Enable HeatWave
&lt;/h2&gt;

&lt;p&gt;Although HeatWave simplifies database management, it's worth understanding a few practical limitations before deploying it. Keep these points in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It runs within Oracle Cloud Infrastructure.&lt;/li&gt;
&lt;li&gt;Pricing varies depending on the resources you use.&lt;/li&gt;
&lt;li&gt;The platform is designed specifically for MySQL workloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Considering these factors beforehand helps you determine whether it fits your application's requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Your HeatWave Environment
&lt;/h2&gt;

&lt;p&gt;The first step is creating a MySQL Database Service instance from the Oracle Cloud Console if you don't already have one. During deployment you'll configure the database by selecting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The MySQL version.&lt;/li&gt;
&lt;li&gt;Compute resources.&lt;/li&gt;
&lt;li&gt;Storage capacity.&lt;/li&gt;
&lt;li&gt;Other instance settings required for your environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the instance is available, import your database into MySQL.&lt;/p&gt;

&lt;p&gt;Once the import is complete, open the MySQL HeatWave section in Oracle Cloud and review your database configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring HeatWave
&lt;/h2&gt;

&lt;p&gt;HeatWave automatically prepares the database for analytical processing, but you can still review and adjust the available settings. A few common tasks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allocating memory for in-memory processing.&lt;/li&gt;
&lt;li&gt;Checking the HeatWave configuration.&lt;/li&gt;
&lt;li&gt;Verifying that the service is active.&lt;/li&gt;
&lt;li&gt;Monitoring resource usage through Oracle Cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After these steps, you can continue working with your database while HeatWave accelerates supported analytical queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working with Your Database
&lt;/h2&gt;

&lt;p&gt;After setup, there is very little change to your daily workflow. Queries are executed as usual while HeatWave handles analytical processing behind the scenes. It's a good idea to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor database performance regularly.&lt;/li&gt;
&lt;li&gt;Watch memory utilization.&lt;/li&gt;
&lt;li&gt;Scale compute resources when workloads increase.&lt;/li&gt;
&lt;li&gt;Review Oracle Cloud metrics for overall database health.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keeping an eye on these metrics helps ensure your environment continues to perform as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Is MySQL HeatWave?
&lt;/h3&gt;

&lt;p&gt;MySQL HeatWave is Oracle's managed MySQL cloud service that combines transactional processing with in-memory analytics. It enables applications to process operational and analytical workloads without moving data to a separate analytics platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is MySQL HeatWave Hard to Set Up?
&lt;/h3&gt;

&lt;p&gt;For most users, deployment is fairly straightforward. Oracle manages much of the infrastructure, leaving you to create the database instance, import your data, and configure HeatWave through the Oracle Cloud Console.&lt;/p&gt;

&lt;p&gt;An Oracle Cloud account is required before you begin.&lt;/p&gt;

&lt;p&gt;Most of the configuration is completed through the graphical interface, making it accessible even if you're new to Oracle Cloud services.&lt;/p&gt;

&lt;p&gt;Once everything is configured, ongoing maintenance mainly involves monitoring usage and scaling resources when necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;MySQL HeatWave provides a practical way to combine transactional and analytical processing in a managed MySQL environment. After creating a database instance, importing your data, and configuring HeatWave, you can continue using MySQL while benefiting from in-memory analytics for supported workloads.&lt;/p&gt;

&lt;p&gt;For the complete tutorial with the original walkthrough and additional details, read &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/setting-up-mysql-heatwave-a-guided-tutorial/" rel="noopener noreferrer"&gt;Setting Up MySQL HeatWave: A Guided Tutorial.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SQL Index Maintenance: Best Practices for Open Source Databases</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 14 Sep 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/sql-index-maintenance-best-practices-for-open-source-databases-5gb6</link>
      <guid>https://dev.to/dbvismarketing/sql-index-maintenance-best-practices-for-open-source-databases-5gb6</guid>
      <description>&lt;p&gt;Most developers know that indexes can dramatically improve query performance, but creating an index is only the beginning. As tables grow and applications evolve, indexes should be reviewed to ensure they still support your workload.&lt;/p&gt;

&lt;p&gt;Let's look at the basics of maintaining SQL indexes in open source databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Index Maintenance Matters
&lt;/h2&gt;

&lt;p&gt;Indexes help the database locate rows without scanning an entire table. That makes reads faster, but indexes also require storage and must be updated whenever data changes.&lt;/p&gt;

&lt;p&gt;A healthy indexing strategy helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed up common queries.&lt;/li&gt;
&lt;li&gt;Reduce unnecessary table scans.&lt;/li&gt;
&lt;li&gt;Improve application responsiveness.&lt;/li&gt;
&lt;li&gt;Keep execution plans efficient.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to create more indexes—it's to maintain the right ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Index
&lt;/h2&gt;

&lt;p&gt;Different queries benefit from different index types. Understanding their strengths makes it easier to design an efficient database.&lt;/p&gt;

&lt;p&gt;Some of the most common options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary indexes&lt;/strong&gt; for uniquely identifying records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B-Tree indexes&lt;/strong&gt; for searches, sorting, and range queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hash indexes&lt;/strong&gt; for exact-match lookups in supported engines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GIN indexes&lt;/strong&gt; for PostgreSQL arrays and document-like data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spatial indexes&lt;/strong&gt; for geographic information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Selecting an index should always be driven by the queries your application actually runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical SQL Index Maintenance
&lt;/h2&gt;

&lt;p&gt;Creating indexes isn't enough. Regular reviews help ensure they continue improving performance instead of becoming unnecessary overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use EXPLAIN Before Optimizing
&lt;/h3&gt;

&lt;p&gt;Before changing an index, inspect how the database executes the query.&lt;/p&gt;

&lt;p&gt;Adding &lt;code&gt;EXPLAIN&lt;/code&gt; before a statement shows whether an index is being used.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;EXPLAIN&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Smith'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When reviewing the execution plan, pay attention to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selected indexes.&lt;/li&gt;
&lt;li&gt;Possible indexes.&lt;/li&gt;
&lt;li&gt;Table scans.&lt;/li&gt;
&lt;li&gt;Optimizer decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This information often reveals why a query performs the way it does.&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove Indexes That Don't Help
&lt;/h3&gt;

&lt;p&gt;Indexes that never get used still consume storage and increase write costs.&lt;/p&gt;

&lt;p&gt;Review your execution plans regularly and look for indexes that repeatedly appear as possible candidates but are never selected.&lt;/p&gt;

&lt;p&gt;If necessary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplify the query.&lt;/li&gt;
&lt;li&gt;Adjust filtering columns.&lt;/li&gt;
&lt;li&gt;Remove redundant indexes.&lt;/li&gt;
&lt;li&gt;Consolidate overlapping indexes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keeping your index set lean usually makes maintenance easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Review Indexes After Data Changes
&lt;/h3&gt;

&lt;p&gt;Large amounts of inserted, updated, or deleted data can affect index efficiency.&lt;/p&gt;

&lt;p&gt;After significant modifications, consider reviewing your indexing strategy to determine whether indexes should be rebuilt or adjusted.&lt;/p&gt;

&lt;p&gt;Routine maintenance becomes increasingly valuable as databases grow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design With Workloads in Mind
&lt;/h3&gt;

&lt;p&gt;Every application has different access patterns.&lt;/p&gt;

&lt;p&gt;Before adding another index, ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which queries are executed most often?&lt;/li&gt;
&lt;li&gt;Is the workload read-heavy or write-heavy?&lt;/li&gt;
&lt;li&gt;Does the storage cost justify another index?&lt;/li&gt;
&lt;li&gt;Will this index support multiple queries?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good indexing is based on usage patterns—not assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How often should SQL indexes be maintained?
&lt;/h3&gt;

&lt;p&gt;There isn't a universal schedule. Maintenance depends on how frequently data changes and how query patterns evolve. Regular performance reviews help determine when indexes need attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can I tell if an index is being used?
&lt;/h3&gt;

&lt;p&gt;Run your query with the &lt;code&gt;EXPLAIN&lt;/code&gt; command and inspect the execution plan. It shows which indexes the optimizer selected and which alternatives were available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should unused indexes always be removed?
&lt;/h3&gt;

&lt;p&gt;Not immediately. First verify that they aren't supporting less frequent workloads. If an index consistently provides no value, removing it can reduce maintenance overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use DbVisualizer?
&lt;/h3&gt;

&lt;p&gt;DbVisualizer provides tools for exploring databases, reviewing execution plans, and managing database objects across many SQL platforms from a single interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;SQL indexes remain one of the most effective ways to improve database performance, but they should be maintained alongside your application. Reviewing execution plans, removing unnecessary indexes, and adapting your indexing strategy as workloads change helps keep queries efficient over time.&lt;/p&gt;

&lt;p&gt;For the complete article and additional examples, visit the original guide &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/understanding-sql-index-maintenance-in-open-source-databases/" rel="noopener noreferrer"&gt;Understanding SQL Index Maintenance in Open Source Databases.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use SQL INSERT INTO SELECT to Copy Data Between Tables</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 07 Sep 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-to-use-sql-insert-into-select-to-copy-data-between-tables-2ib8</link>
      <guid>https://dev.to/dbvismarketing/how-to-use-sql-insert-into-select-to-copy-data-between-tables-2ib8</guid>
      <description>&lt;p&gt;Copying rows between tables is a common SQL task. Rather than inserting values one row at a time, &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; lets you move data using the output of another query.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does INSERT INTO SELECT Do?
&lt;/h2&gt;

&lt;p&gt;This statement inserts the results of a &lt;code&gt;SELECT&lt;/code&gt; query into an existing table. It works well for migrations, backups, reporting tables, and filtered datasets.&lt;/p&gt;

&lt;p&gt;Some useful characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supports filtered inserts.&lt;/li&gt;
&lt;li&gt;Can use joins.&lt;/li&gt;
&lt;li&gt;Allows value transformations.&lt;/li&gt;
&lt;li&gt;Works across popular SQL databases.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;

&lt;p&gt;The statement combines an insert operation with a select query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;target_table&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;column3&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;source_table&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example Query
&lt;/h2&gt;

&lt;p&gt;Here's a simple example that stores only IT employees in another table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;it_staff_backup&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;original_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;full_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;salary&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'IT'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filters employees by department.&lt;/li&gt;
&lt;li&gt;Builds a full name.&lt;/li&gt;
&lt;li&gt;Copies salary information.&lt;/li&gt;
&lt;li&gt;Inserts the results into an existing backup table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which SQL statement copies table data?
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; whenever data should be copied into an existing table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is INSERT INTO table from SELECT another command?
&lt;/h3&gt;

&lt;p&gt;No. It's another name for the same SQL statement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Oracle support this syntax?
&lt;/h3&gt;

&lt;p&gt;Yes. Oracle implements the same general approach for inserting data selected from another table or query.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is CREATE TABLE ... SELECT different?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;CREATE TABLE ... SELECT&lt;/code&gt; creates a new table first. &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; writes into a table that already exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why work with a visual database client?
&lt;/h3&gt;

&lt;p&gt;Graphical SQL tools make it easier to browse schemas, execute queries, inspect results, and manage databases from one interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; is a practical SQL feature for copying and transforming data in one step. Understanding this statement can simplify many everyday database tasks.&lt;/p&gt;

&lt;p&gt;Read the full original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/insert-into-%e2%80%a6-select-statement-what-you-need-to-know/" rel="noopener noreferrer"&gt;INSERT INTO … SELECT Statement: What You Need to Know.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SQL SUBSTRING_INDEX: How to Extract Text Using Delimiters</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 31 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/sql-substringindex-how-to-extract-text-using-delimiters-2496</link>
      <guid>https://dev.to/dbvismarketing/sql-substringindex-how-to-extract-text-using-delimiters-2496</guid>
      <description>&lt;p&gt;Many SQL queries involve extracting part of a value instead of returning an entire string. Whether you're working with URLs, email addresses, or IP addresses, &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; provides a simple way to retrieve the section you need using a delimiter.&lt;/p&gt;

&lt;p&gt;This article covers the basics of the function, common use cases, and a few things to keep in mind when using it in larger datasets.&lt;/p&gt;

&lt;h2&gt;
  
  
  How SUBSTRING_INDEX Works
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; returns a portion of a string based on a delimiter and the number of delimiter occurrences.&lt;/p&gt;

&lt;p&gt;The basic syntax is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;delimiter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;count&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function accepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A string or column&lt;/li&gt;
&lt;li&gt;A delimiter to search for&lt;/li&gt;
&lt;li&gt;A count value that determines where the string is split&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://dbvis.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Negative values count delimiters from the end of the string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'www.dbvis.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If one of the arguments is &lt;code&gt;NULL&lt;/code&gt;, the function returns &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everyday Use Cases
&lt;/h2&gt;

&lt;p&gt;Instead of hardcoded values, you'll usually apply &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; to table columns.&lt;/p&gt;

&lt;p&gt;Some common scenarios include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting email domains&lt;/li&gt;
&lt;li&gt;Breaking IP addresses into individual parts&lt;/li&gt;
&lt;li&gt;Parsing URLs&lt;/li&gt;
&lt;li&gt;Preparing data for reports and analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, extracting email domains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'@'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach is useful when grouping or filtering users based on their email provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;String functions can become expensive on large tables, so it's worth planning queries carefully.&lt;/p&gt;

&lt;p&gt;A few practical recommendations are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test queries on production-sized datasets.&lt;/li&gt;
&lt;li&gt;Use indexes where they support the overall query.&lt;/li&gt;
&lt;li&gt;Combine extraction with aggregation only when needed.&lt;/li&gt;
&lt;li&gt;Export processed data if it will be reused elsewhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a simple reporting query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;SUBSTRING_INDEX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'@'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Related Functions
&lt;/h2&gt;

&lt;p&gt;Not every database includes &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt;, but similar functionality exists across SQL platforms.&lt;/p&gt;

&lt;p&gt;Depending on the database, you may use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SUBSTRING&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SUBSTR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RIGHT()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pattern-based &lt;code&gt;SUBSTRING&lt;/code&gt; in PostgreSQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The available function depends on the SQL dialect you're working with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is SUBSTRING_INDEX in SQL?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; extracts part of a string based on a delimiter and the number of matching delimiter occurrences. It's commonly used to isolate values from structured text.&lt;/p&gt;

&lt;h3&gt;
  
  
  When should I use SUBSTRING_INDEX?
&lt;/h3&gt;

&lt;p&gt;Use it whenever data contains predictable separators, such as periods, slashes, or the &lt;code&gt;@&lt;/code&gt; symbol in email addresses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which databases support SUBSTRING_INDEX?
&lt;/h3&gt;

&lt;p&gt;MySQL provides native support for &lt;code&gt;SUBSTRING_INDEX&lt;/code&gt;. Other database systems offer comparable functionality through functions such as &lt;code&gt;SUBSTRING&lt;/code&gt;, &lt;code&gt;SUBSTR&lt;/code&gt;, or &lt;code&gt;RIGHT()&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING_INDEX&lt;/code&gt; is a useful SQL function for extracting values from structured strings without complex expressions. Whether you're parsing URLs, email addresses, or IP addresses, it can simplify many everyday database tasks.&lt;/p&gt;

&lt;p&gt;If you'd like to explore more examples and database compatibility details, read the original article &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/parsing-data-with-substring_index-a-complete-guide/" rel="noopener noreferrer"&gt;Parsing Data with SUBSTRING_INDEX: A Complete Guide.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Use SQL DROP TABLE Safely: Syntax, Examples, and Tips</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 24 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-to-use-sql-drop-table-safely-syntax-examples-and-tips-14o8</link>
      <guid>https://dev.to/dbvismarketing/how-to-use-sql-drop-table-safely-syntax-examples-and-tips-14o8</guid>
      <description>&lt;p&gt;The SQL &lt;code&gt;DROP TABLE&lt;/code&gt; statement is designed to remove an entire table from a database. Unlike commands that only delete records, this one also removes the table definition and related database objects. Knowing its behavior helps you make safer decisions when modifying a database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does DROP TABLE Do?
&lt;/h2&gt;

&lt;p&gt;Before deleting a table, it's useful to understand exactly what the statement affects.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;DROP TABLE&lt;/code&gt; typically removes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The table itself.&lt;/li&gt;
&lt;li&gt;Every stored row.&lt;/li&gt;
&lt;li&gt;Indexes associated with the table.&lt;/li&gt;
&lt;li&gt;Constraints and triggers tied to it.&lt;/li&gt;
&lt;li&gt;The storage allocated to the table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since this is generally a DDL operation, it is usually committed immediately and cannot be rolled back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic SQL Syntax
&lt;/h2&gt;

&lt;p&gt;The syntax is straightforward and works similarly across most relational database systems.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After execution, the &lt;code&gt;students&lt;/code&gt; table no longer exists, and applications can no longer query it.&lt;/p&gt;

&lt;p&gt;Some database platforms also allow multiple table names in the same statement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Avoid Errors with IF EXISTS
&lt;/h2&gt;

&lt;p&gt;Database scripts often need to run repeatedly. In those situations, trying to remove a table that has already been deleted can interrupt execution.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;IF EXISTS&lt;/code&gt; avoids that problem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This version skips the operation when the table is missing instead of returning an error, making automation scripts more reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Should You Use DROP TABLE?
&lt;/h2&gt;

&lt;p&gt;There are several practical situations where removing a table is appropriate.&lt;/p&gt;

&lt;p&gt;You might use it when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaning up temporary tables.&lt;/li&gt;
&lt;li&gt;Removing outdated database objects.&lt;/li&gt;
&lt;li&gt;Resetting development environments.&lt;/li&gt;
&lt;li&gt;Simplifying an evolving database schema.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before executing the command, confirm that no applications or database objects still depend on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Safer Way to Remove Tables
&lt;/h2&gt;

&lt;p&gt;Running destructive SQL commands directly from a query editor works, but graphical database tools can make the process easier to verify.&lt;/p&gt;

&lt;p&gt;A visual client allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse database objects.&lt;/li&gt;
&lt;li&gt;Inspect the schema first.&lt;/li&gt;
&lt;li&gt;Preview the generated SQL.&lt;/li&gt;
&lt;li&gt;Execute the command after confirmation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This extra visibility can help prevent accidental changes, especially when working with shared databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices Before Running DROP TABLE
&lt;/h2&gt;

&lt;p&gt;Removing a table takes only one statement, but preparation matters.&lt;/p&gt;

&lt;p&gt;Consider these recommendations before executing it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back up valuable data.&lt;/li&gt;
&lt;li&gt;Check foreign key relationships.&lt;/li&gt;
&lt;li&gt;Review dependent views and procedures.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;IF EXISTS&lt;/code&gt; where appropriate.&lt;/li&gt;
&lt;li&gt;Keep schema changes under version control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These habits help reduce the chance of removing something unexpectedly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the difference between DROP TABLE, TRUNCATE, and DELETE?
&lt;/h3&gt;

&lt;p&gt;The three commands remove data differently.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DROP TABLE&lt;/code&gt; deletes the table completely. &lt;code&gt;TRUNCATE&lt;/code&gt; clears all rows but keeps the table definition. &lt;code&gt;DELETE&lt;/code&gt; removes rows while preserving both the structure and database object.&lt;/p&gt;

&lt;p&gt;They also differ in logging, rollback capabilities, and trigger behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  How can you remove every table?
&lt;/h3&gt;

&lt;p&gt;SQL does not provide a universal command for dropping all tables.&lt;/p&gt;

&lt;p&gt;Instead, administrators usually generate &lt;code&gt;DROP TABLE&lt;/code&gt; statements from the database catalog and execute them through a script.&lt;/p&gt;

&lt;p&gt;The exact solution depends on the database system being used.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you remove a column?
&lt;/h3&gt;

&lt;p&gt;Dropping a column requires &lt;code&gt;ALTER TABLE&lt;/code&gt; rather than &lt;code&gt;DROP TABLE&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;table_name&lt;/span&gt;
&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the selected column is removed, while the rest of the table remains unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  How are temporary tables dropped?
&lt;/h3&gt;

&lt;p&gt;Temporary tables are generally removed with the same command.&lt;/p&gt;

&lt;p&gt;Some database engines include additional keywords or naming conventions, but the overall process is very similar to dropping a regular table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can multiple tables be removed together?
&lt;/h3&gt;

&lt;p&gt;Yes, many SQL databases support listing several tables in one statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;orders_archive&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;customers_archive&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Support varies between database platforms, so check your system's documentation before relying on this syntax.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use a visual database client?
&lt;/h3&gt;

&lt;p&gt;Visual database clients simplify everyday administration by combining schema exploration, SQL editing, and object management in one interface.&lt;/p&gt;

&lt;p&gt;They also make potentially destructive operations easier to review before execution, reducing the likelihood of accidental changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;DROP TABLE&lt;/code&gt; is an essential SQL command for permanently removing database tables. Understanding its syntax, knowing when to use &lt;code&gt;IF EXISTS&lt;/code&gt;, checking dependencies, and following good database practices can help you perform schema changes more safely.&lt;/p&gt;

&lt;p&gt;To explore database-specific behavior, additional SQL examples, and a more detailed explanation, read the original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/sql-drop-table-statement-everything-you-need-to-know/" rel="noopener noreferrer"&gt;SQL DROP TABLE Statement: Everything You Need To Know&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Upgrade MySQL in WHM: Quick Setup Guide</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 17 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/upgrade-mysql-in-whm-quick-setup-guide-3fd0</link>
      <guid>https://dev.to/dbvismarketing/upgrade-mysql-in-whm-quick-setup-guide-3fd0</guid>
      <description>&lt;p&gt;WHM provides a built-in way to upgrade MySQL and MariaDB without relying entirely on the command line. This overview covers the main steps, compatibility checks, and a few tools that can help with database management afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sign In to WHM
&lt;/h2&gt;

&lt;p&gt;Start by accessing your WHM instance. You'll need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open your server using port &lt;code&gt;2087&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Authenticate with your server account.&lt;/li&gt;
&lt;li&gt;Confirm that WHM is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upgrade Your Database Version
&lt;/h2&gt;

&lt;p&gt;Once inside WHM, the upgrade process only takes a few steps. Open &lt;strong&gt;MySQL/MariaDB Upgrade&lt;/strong&gt;, then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select a supported database version.&lt;/li&gt;
&lt;li&gt;Review the transferred &lt;code&gt;my.cnf&lt;/code&gt; settings.&lt;/li&gt;
&lt;li&gt;Choose automatic or interactive mode.&lt;/li&gt;
&lt;li&gt;Complete the upgrade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Run the Upgrade Checker
&lt;/h3&gt;

&lt;p&gt;After selecting the version, it's a good idea to verify the upgrade. The checker helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review compatibility.&lt;/li&gt;
&lt;li&gt;Detect potential problems.&lt;/li&gt;
&lt;li&gt;Confirm the upgrade is ready.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Management Beyond Upgrades
&lt;/h2&gt;

&lt;p&gt;Keeping software updated is only part of maintaining a healthy database environment. Useful capabilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing database connections.&lt;/li&gt;
&lt;li&gt;Running SQL queries.&lt;/li&gt;
&lt;li&gt;Controlling query permissions.&lt;/li&gt;
&lt;li&gt;Creating ER diagrams.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How can I upgrade MySQL in WHM?
&lt;/h3&gt;

&lt;p&gt;Use the &lt;strong&gt;Upgrade Database Version&lt;/strong&gt; feature in WHM, choose a supported release, review your configuration, and complete the guided upgrade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I upgrade MySQL without WHM?
&lt;/h3&gt;

&lt;p&gt;Yes. Manual upgrades involve backing up your data, installing updated MySQL packages, and restarting the service using your operating system's package manager.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is the Upgrade Checker necessary?
&lt;/h3&gt;

&lt;p&gt;It's recommended because it validates compatibility before the upgrade is finalized.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does DbVisualizer upgrade MySQL?
&lt;/h3&gt;

&lt;p&gt;No. DbVisualizer is intended for working with databases after they're running, not for upgrading the database server itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;WHM simplifies MySQL and MariaDB upgrades by providing a guided interface and compatibility checks. If you'd like the complete walkthrough, read the original article here &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/how-to-upgrade-mysql-in-whm-step-by-step-guide/" rel="noopener noreferrer"&gt;How to Upgrade MySQL in WHM? Step-By-Step Guide.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Getting Started with Multitenant Database Containers in Kubernetes</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/getting-started-with-multitenant-database-containers-in-kubernetes-3bg3</link>
      <guid>https://dev.to/dbvismarketing/getting-started-with-multitenant-database-containers-in-kubernetes-3bg3</guid>
      <description>&lt;p&gt;Running databases for multiple customers doesn't always require separate infrastructure. Multitenant database containers allow applications to serve multiple tenants while maintaining clear data boundaries and efficient resource usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multitenancy in Simple Terms
&lt;/h2&gt;

&lt;p&gt;A multitenant system serves multiple customers from a shared application or database environment.&lt;/p&gt;

&lt;p&gt;While infrastructure is shared, each tenant's data remains separate and protected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Kubernetes and Containers Matter
&lt;/h2&gt;

&lt;p&gt;Containers provide portable and repeatable environments for databases. Kubernetes adds orchestration and automation on top. Some common advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduced infrastructure overhead&lt;/li&gt;
&lt;li&gt;Easier scaling during traffic increases&lt;/li&gt;
&lt;li&gt;Better operational consistency&lt;/li&gt;
&lt;li&gt;Tenant isolation controls&lt;/li&gt;
&lt;li&gt;Version-controlled infrastructure definitions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Components Required for Deployment
&lt;/h2&gt;

&lt;p&gt;A Kubernetes database deployment usually includes three essential resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Storage Layer
&lt;/h3&gt;

&lt;p&gt;Persistent Volumes hold database data independently from containers. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PersistentVolume&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Storage Requests
&lt;/h3&gt;

&lt;p&gt;Persistent Volume Claims allocate storage to workloads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;PersistentVolumeClaim&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Database Deployment
&lt;/h3&gt;

&lt;p&gt;The deployment resource controls the database container lifecycle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Network Access
&lt;/h3&gt;

&lt;p&gt;Services expose the database to applications running inside the cluster.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploying the Resources
&lt;/h2&gt;

&lt;p&gt;Once the configuration files are ready, deploy them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-pv.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-pvc.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-deployment.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; mysql-service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verification commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pv
kubectl get pvc
kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Are Multitenant Database Containers?
&lt;/h3&gt;

&lt;p&gt;They are database deployments designed to support multiple tenants from shared infrastructure while maintaining logical separation between users and applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Can They Be Configured in Kubernetes?
&lt;/h3&gt;

&lt;p&gt;The process typically involves defining a Persistent Volume, a Deployment, and a Service using Kubernetes YAML manifests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Use DbVisualizer?
&lt;/h3&gt;

&lt;p&gt;DbVisualizer provides database management features such as query execution, data editing, export options, and support for numerous database platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Multitenant database containers offer a straightforward way to manage multiple tenants within Kubernetes. By combining storage, deployments, and services, teams can build database environments that are easier to scale and maintain. For the original article, visit: &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/multitenant-database-containers-for-modern-day-applications/" rel="noopener noreferrer"&gt;Multitenant Database Containers for Modern-Day Applications&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>multitenant</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Reliable MySQL Backups with MyDumper Checksum Validation</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 03 Aug 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/reliable-mysql-backups-with-mydumper-checksum-validation-2k9c</link>
      <guid>https://dev.to/dbvismarketing/reliable-mysql-backups-with-mydumper-checksum-validation-2k9c</guid>
      <description>&lt;p&gt;MyDumper is widely used for MySQL and MariaDB backups because it can process data using multiple threads. Combined with checksum validation, it can also help verify that restored backups remain accurate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes MyDumper Different?
&lt;/h2&gt;

&lt;p&gt;Traditional backup tools may process data sequentially. MyDumper approaches the task differently by using parallel operations. Some advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster backup execution&lt;/li&gt;
&lt;li&gt;Better handling of large tables&lt;/li&gt;
&lt;li&gt;Flexible filtering options&lt;/li&gt;
&lt;li&gt;Support for parallel workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it useful for both small and large database environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enabling Checksum Validation
&lt;/h2&gt;

&lt;p&gt;Backup integrity can be checked by enabling checksum verification, example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./mydumper &lt;span class="nt"&gt;--host&lt;/span&gt; localhost &lt;span class="nt"&gt;--user&lt;/span&gt; mysqluser &lt;span class="nt"&gt;--password&lt;/span&gt; BrV9u2MbT &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--outputdir&lt;/span&gt; /tmp/backups/ &lt;span class="nt"&gt;--M&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When checksum validation is enabled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backup data is analyzed&lt;/li&gt;
&lt;li&gt;Checksum values are stored&lt;/li&gt;
&lt;li&gt;Restored data is compared&lt;/li&gt;
&lt;li&gt;Mismatches can be detected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process helps identify integrity issues before backups are relied upon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Helpful Features Worth Knowing
&lt;/h2&gt;

&lt;p&gt;MyDumper offers more than backup creation. Administrators can also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect through SSL&lt;/li&gt;
&lt;li&gt;Include specific databases&lt;/li&gt;
&lt;li&gt;Exclude selected objects&lt;/li&gt;
&lt;li&gt;Filter rows&lt;/li&gt;
&lt;li&gt;Adjust thread usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These controls allow backup jobs to be tailored to specific requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  How MyLoader Fits In
&lt;/h2&gt;

&lt;p&gt;MyLoader is commonly used alongside MyDumper when restoring data. The pairing provides:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fast backup generation&lt;/li&gt;
&lt;li&gt;Efficient data restoration&lt;/li&gt;
&lt;li&gt;Validation support&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For larger databases, this workflow can improve operational efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporting Tools for Database Work
&lt;/h2&gt;

&lt;p&gt;Backup validation is important, but so is ongoing database management. SQL clients can assist with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query tracking&lt;/li&gt;
&lt;li&gt;Data exploration&lt;/li&gt;
&lt;li&gt;Result exports&lt;/li&gt;
&lt;li&gt;Query reuse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together with backup tools, they form part of a broader database toolkit.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is MyDumper and how does it differ from mysqldump?
&lt;/h3&gt;

&lt;p&gt;MyDumper performs logical backups using multiple threads, while mysqldump operates in a single-threaded manner.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are MyLoader and MyDumper the same?
&lt;/h3&gt;

&lt;p&gt;No. MyDumper creates backup files and MyLoader restores them. They are designed to work together.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do you use MyDumper?
&lt;/h3&gt;

&lt;p&gt;Execute MyDumper from the command line, provide database connection details, and optionally enable checksum validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;MyDumper provides a practical solution for creating MySQL backups while supporting integrity verification through checksums. When combined with MyLoader, it can streamline backup and recovery workflows. For the complete article, visit: &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/using-mydumper-checksums-for-reliable-mysql-backup-validation/" rel="noopener noreferrer"&gt;Using MyDumper Checksums for Reliable MySQL Backup Validation.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>PostgreSQL Backup and Restore Workflow for Developers</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 27 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/postgresql-backup-and-restore-workflow-for-developers-npm</link>
      <guid>https://dev.to/dbvismarketing/postgresql-backup-and-restore-workflow-for-developers-npm</guid>
      <description>&lt;p&gt;PostgreSQL includes built-in tools that make backups and recovery straightforward when used correctly. This overview covers backup creation, restore procedures, and common issues that appear during recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparing PostgreSQL for Backup Testing
&lt;/h2&gt;

&lt;p&gt;A simple Docker-based setup makes it easy to practice backup operations.&lt;/p&gt;

&lt;p&gt;Key preparation steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a PostgreSQL container&lt;/li&gt;
&lt;li&gt;Configure database credentials&lt;/li&gt;
&lt;li&gt;Create a sample database&lt;/li&gt;
&lt;li&gt;Insert test data
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose &lt;span class="nt"&gt;-f&lt;/span&gt; postgresql.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This provides a safe environment for testing backup and restore procedures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Backup with pg_dump
&lt;/h2&gt;

&lt;p&gt;The first step in any recovery plan is creating a backup.&lt;/p&gt;

&lt;p&gt;A custom-format backup is a common choice because it balances storage efficiency and recovery flexibility.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pg_dump &lt;span class="nt"&gt;-U&lt;/span&gt; dbadmin &lt;span class="nt"&gt;-F&lt;/span&gt; c &lt;span class="nt"&gt;-f&lt;/span&gt; backup.dump surveyplatform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This file can later be restored using pg_restore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling a Failed Restore
&lt;/h2&gt;

&lt;p&gt;Restore failures often reveal missing dependencies rather than damaged backups. A common example is a missing database role. When this happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check restore errors carefully&lt;/li&gt;
&lt;li&gt;Recreate missing roles&lt;/li&gt;
&lt;li&gt;Remove incomplete restore attempts&lt;/li&gt;
&lt;li&gt;Retry the restoration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;ROLE&lt;/span&gt; &lt;span class="n"&gt;demo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resolving ownership issues is frequently enough to complete recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Backup Format
&lt;/h2&gt;

&lt;p&gt;PostgreSQL supports multiple backup formats. Options include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL text backups&lt;/li&gt;
&lt;li&gt;Custom backups&lt;/li&gt;
&lt;li&gt;Directory backups&lt;/li&gt;
&lt;li&gt;TAR backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each format targets a different operational need, from debugging to large-scale restoration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restoring and Verifying Data
&lt;/h2&gt;

&lt;p&gt;Restoration should always be followed by validation. For SQL backups:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;psql &lt;span class="nt"&gt;-f&lt;/span&gt; backup.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For custom backups:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pg_restore &lt;span class="nt"&gt;-d&lt;/span&gt; surveyplatform backup.dump
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After restoring, run queries against important tables to confirm the expected data exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which PostgreSQL backup format should I use for daily backups?
&lt;/h3&gt;

&lt;p&gt;Custom format is often the recommended starting point. It offers compression and flexible recovery options. The format also supports selective restores when needed.&lt;/p&gt;

&lt;p&gt;For many workloads, it provides a practical balance between convenience and capability.&lt;/p&gt;

&lt;h3&gt;
  
  
  How often should I test my PostgreSQL backups?
&lt;/h3&gt;

&lt;p&gt;Backup testing should happen regularly. A monthly restore test can identify problems before they affect production recovery.&lt;/p&gt;

&lt;p&gt;Verification queries help confirm backup quality. Testing turns backups into a dependable recovery solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do I get "role does not exist" errors when restoring backups?
&lt;/h3&gt;

&lt;p&gt;The backup references a database owner that is not available on the target system.&lt;/p&gt;

&lt;p&gt;PostgreSQL cannot assign ownership without that role. Creating the missing role resolves the issue. The restore can then complete successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I restore a PostgreSQL backup to a different database name?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Create the destination database beforehand. Restore the backup into that database. Avoid using options that force the original database name to be recreated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;PostgreSQL's pg_dump and pg_restore tools provide a dependable foundation for backup and recovery. Knowing how to create backups, troubleshoot restores, and verify recovered data helps reduce risk when failures occur. For the complete tutorial, visit &lt;strong&gt;&lt;a href="https://www.dbvis.com/thetable/postgresql-backup-and-restore-complete-tutorial-with-pg_dump-and-pg_restore/" rel="noopener noreferrer"&gt;PostgreSQL Backup and Restore: Complete Tutorial with pg_dump and pg_restore.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>backup</category>
      <category>restore</category>
    </item>
    <item>
      <title>Preparing for MySQL 8.0 End of Life: Key Things to Know</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 20 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/preparing-for-mysql-80-end-of-life-key-things-to-know-3n2d</link>
      <guid>https://dev.to/dbvismarketing/preparing-for-mysql-80-end-of-life-key-things-to-know-3n2d</guid>
      <description>&lt;p&gt;MySQL 8.0 reaches end of life in April 2026. Once support ends, organizations using the database version should be aware of the operational and security implications that follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Impact
&lt;/h2&gt;

&lt;p&gt;The end of official support means changes for database environments.&lt;/p&gt;

&lt;p&gt;Key considerations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No future security fixes&lt;/li&gt;
&lt;li&gt;Reduced support resources&lt;/li&gt;
&lt;li&gt;Compliance concerns&lt;/li&gt;
&lt;li&gt;Greater maintenance effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For regulated industries, unsupported software may require additional controls and documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Next Steps
&lt;/h2&gt;

&lt;p&gt;Organizations generally choose one of three approaches.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade to a Supported Version
&lt;/h3&gt;

&lt;p&gt;Many teams will move to MySQL 8.4 or newer releases. Advantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ongoing updates&lt;/li&gt;
&lt;li&gt;Better security posture&lt;/li&gt;
&lt;li&gt;Easier compliance management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Explore Alternative Platforms
&lt;/h3&gt;

&lt;p&gt;Some organizations may decide to migrate elsewhere. Frequently considered options are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MariaDB&lt;/li&gt;
&lt;li&gt;Percona Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These platforms offer compatibility with many existing MySQL workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue Operating MySQL 8.0
&lt;/h3&gt;

&lt;p&gt;Although possible, staying on MySQL 8.0 after EOL increases risk. Organizations should prepare for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Independent troubleshooting&lt;/li&gt;
&lt;li&gt;Additional security oversight&lt;/li&gt;
&lt;li&gt;Potential audit concerns&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database Tools and Daily Operations
&lt;/h2&gt;

&lt;p&gt;Database management tools can support administrators by improving visibility and productivity. Useful capabilities often include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema navigation&lt;/li&gt;
&lt;li&gt;Access control management&lt;/li&gt;
&lt;li&gt;SQL assistance&lt;/li&gt;
&lt;li&gt;Query-building tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While they do not replace software updates, they can improve daily database administration.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Has MySQL 8.0 Reached EOL?
&lt;/h3&gt;

&lt;p&gt;MySQL 8.0 reaches end of life in April 2026. The support status depends on the current date and should be verified against official lifecycle information.&lt;/p&gt;

&lt;h3&gt;
  
  
  What If I Need to Stay on MySQL 8.0?
&lt;/h3&gt;

&lt;p&gt;Upgrading remains the preferred solution. If business requirements delay migration, organizations should strengthen security practices and carefully monitor database environments. Unsupported software generally becomes harder to maintain over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where Can I Find Official MySQL EOL Notices?
&lt;/h3&gt;

&lt;p&gt;Oracle provides lifecycle and support information through its official MySQL channels. Those notices offer the most reliable source for support timelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The MySQL 8.0 end-of-life transition is primarily about planning ahead. Understanding support timelines, evaluating upgrade paths, and maintaining secure database practices can help organizations manage the change effectively. You can read the original article here: &lt;a href="https://www.dbvis.com/thetable/mysql-8.0-eol-what-happens-next/" rel="noopener noreferrer"&gt;&lt;strong&gt;MySQL 8.0 EOL: What Happens Next?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top RBAC Tools for SQL Databases in 2026</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 13 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/top-rbac-tools-for-sql-databases-in-2026-4c3h</link>
      <guid>https://dev.to/dbvismarketing/top-rbac-tools-for-sql-databases-in-2026-4c3h</guid>
      <description>&lt;p&gt;Database permissions affect both security and day-to-day operations. RBAC helps ensure users only access the resources they need, making the choice of database tooling an important decision.&lt;/p&gt;

&lt;p&gt;Several SQL tools include features that help manage permissions and access controls. Here are three commonly considered options.&lt;/p&gt;

&lt;h2&gt;
  
  
  DbVisualizer
&lt;/h2&gt;

&lt;p&gt;DbVisualizer offers database administration and security-related functionality across many platforms. Key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query execution controls&lt;/li&gt;
&lt;li&gt;Master password support&lt;/li&gt;
&lt;li&gt;Feature-rich SQL editor&lt;/li&gt;
&lt;li&gt;Support for 60+ database technologies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Possible drawbacks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced functionality is paid&lt;/li&gt;
&lt;li&gt;Interface updates may require adaptation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DBeaver
&lt;/h2&gt;

&lt;p&gt;DBeaver combines database management features with role-based administration in its commercial offerings. Useful capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User and project access management&lt;/li&gt;
&lt;li&gt;Built-in Command Palette&lt;/li&gt;
&lt;li&gt;Quick generation of SELECT statements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance may decrease with large datasets&lt;/li&gt;
&lt;li&gt;Can require more system resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Adminer
&lt;/h2&gt;

&lt;p&gt;Adminer is designed for users who want a lightweight solution. Reasons people choose it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free availability&lt;/li&gt;
&lt;li&gt;Multi-database support&lt;/li&gt;
&lt;li&gt;Community-driven extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simpler RBAC options&lt;/li&gt;
&lt;li&gt;Less suitable for larger teams&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Is the Best Tool for RBAC?
&lt;/h3&gt;

&lt;p&gt;The answer depends on your requirements. If advanced database management and security features are priorities, DbVisualizer is often considered first. DBeaver provides a capable alternative, while Adminer is a practical choice for straightforward environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Can You Secure Your Database?
&lt;/h3&gt;

&lt;p&gt;Security starts with fundamentals. Maintain strong passwords, restrict access using roles, audit permissions regularly, and ensure users receive only the privileges they need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;RBAC plays an important role in protecting database systems. Whether you choose DbVisualizer, DBeaver, or Adminer, aligning the tool with your operational needs is the key consideration.&lt;/p&gt;

&lt;p&gt;Read the full article here: &lt;a href="https://www.dbvis.com/thetable/best-tools-for-role-based-access-control-rbac-in-sql-databases-in-2026/" rel="noopener noreferrer"&gt;&lt;strong&gt;Best Tools for Role-Based Access Control (RBAC) in SQL Databases in 2026.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Git Helps Manage SQL Queries and Database Changes</title>
      <dc:creator>DbVisualizer</dc:creator>
      <pubDate>Mon, 06 Jul 2026 07:00:00 +0000</pubDate>
      <link>https://dev.to/dbvismarketing/how-git-helps-manage-sql-queries-and-database-changes-5fcp</link>
      <guid>https://dev.to/dbvismarketing/how-git-helps-manage-sql-queries-and-database-changes-5fcp</guid>
      <description>&lt;p&gt;Most developers use Git daily, but version control can also play an important role in database projects. Managing SQL files through Git makes it easier to track changes, coordinate work, and maintain consistency across environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing Version Control to Databases
&lt;/h2&gt;

&lt;p&gt;Database development often involves ongoing updates to tables, relationships, and queries. Git provides a structured way to manage those changes. Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear change history&lt;/li&gt;
&lt;li&gt;Team collaboration&lt;/li&gt;
&lt;li&gt;Easier rollbacks&lt;/li&gt;
&lt;li&gt;Better visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Examples of Git in Database Projects
&lt;/h2&gt;

&lt;p&gt;Versioning SQL files creates a record of database evolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Schema Modifications
&lt;/h3&gt;

&lt;p&gt;As databases grow, schema updates become common. Git helps document those changes over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supporting Deployments
&lt;/h3&gt;

&lt;p&gt;Database-related SQL files can be shared across teams and environments, making deployments more predictable. Common advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster releases&lt;/li&gt;
&lt;li&gt;Consistent execution&lt;/li&gt;
&lt;li&gt;Easier review processes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Managing Multiple Features
&lt;/h3&gt;

&lt;p&gt;Branches help separate database work into manageable units. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New schema features&lt;/li&gt;
&lt;li&gt;Query updates&lt;/li&gt;
&lt;li&gt;Table restructuring&lt;/li&gt;
&lt;li&gt;Migration development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools That Complement Git
&lt;/h2&gt;

&lt;p&gt;Version control records changes, but SQL clients help interpret them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Exploration
&lt;/h3&gt;

&lt;p&gt;Database tools can assist with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema navigation&lt;/li&gt;
&lt;li&gt;Relationship analysis&lt;/li&gt;
&lt;li&gt;Constraint review&lt;/li&gt;
&lt;li&gt;Index inspection&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ERD Generation
&lt;/h3&gt;

&lt;p&gt;Entity-Relationship Diagrams provide a visual overview of table connections and data flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  SQL Development Features
&lt;/h3&gt;

&lt;p&gt;Many database clients include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart suggestions&lt;/li&gt;
&lt;li&gt;Auto-completion&lt;/li&gt;
&lt;li&gt;Query editing tools&lt;/li&gt;
&lt;li&gt;Formatting assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Relevance Does Git Have for Database Operations?
&lt;/h3&gt;

&lt;p&gt;Git helps organize database-related code and schema changes. It creates a shared process for managing updates while preserving historical records.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Best to Track Changes in a Database?
&lt;/h3&gt;

&lt;p&gt;Version-controlled SQL files are a good starting point. Combining Git with backups and migration management creates a more complete change-tracking strategy.&lt;/p&gt;

&lt;p&gt;Backups remain important because they protect actual database content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Besides Tracking Changes, Is There Something Else To Take Care Of?
&lt;/h3&gt;

&lt;p&gt;Yes. Database knowledge extends beyond version control. Learning about database architecture, performance, and administration can improve long-term results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Git is not a database management tool, but it can support database workflows effectively. Versioning SQL queries, migrations, and schema updates helps teams maintain better visibility and control over database changes.&lt;/p&gt;

&lt;p&gt;Please read the original article &lt;a href="https://www.dbvis.com/thetable/versioning-your-queries-git-workflows-for-analysts-and-engineers/" rel="noopener noreferrer"&gt;&lt;strong&gt;Versioning Your Queries: Git Workflows for Analysts and Engineers.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
