<?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>Forem: Roman Agabekov</title>
    <description>The latest articles on Forem by Roman Agabekov (@drupaladmin).</description>
    <link>https://forem.com/drupaladmin</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F559015%2Fc01d3fd5-e37a-4aff-b8ef-be60aedee397.jpeg</url>
      <title>Forem: Roman Agabekov</title>
      <link>https://forem.com/drupaladmin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/drupaladmin"/>
    <language>en</language>
    <item>
      <title>What’s New At Releem - January 2026</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Thu, 05 Mar 2026 17:01:47 +0000</pubDate>
      <link>https://forem.com/drupaladmin/whats-new-at-releem-january-2026-36dd</link>
      <guid>https://forem.com/drupaladmin/whats-new-at-releem-january-2026-36dd</guid>
      <description>&lt;p&gt;In the first month of the new year, we focused on practical improvements for the Dashboard, Platform, and Agent, while continuing development on a set of larger integrations that are nearing release. We’ll be sharing details soon.&lt;/p&gt;

&lt;p&gt;In March, we’ll be at &lt;a href="https://www.cloudfest.com/event" rel="noopener noreferrer"&gt;CloudFest in Germany (23–26 March)&lt;/a&gt;, and you can find us in &lt;strong&gt;Startup Alley&lt;/strong&gt;. If you’re planning to attend, let us know so we can connect in person and discuss database performance, automation, and partnership opportunities.&lt;/p&gt;

&lt;p&gt;For Releem Community members, we have &lt;strong&gt;free tickets available&lt;/strong&gt;.&lt;br&gt;
To claim your free ticket and save &lt;strong&gt;€499&lt;/strong&gt;, just send us request.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd091phw8gtdhiutjhvvj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd091phw8gtdhiutjhvvj.png" alt=" " width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also shipped &lt;strong&gt;Dashboard Sharing&lt;/strong&gt; 💪 This was something we initially treated as a lower-priority request, but it kept coming up. Eventually it became clear it was blocking teams from using Releem together, so we moved it up and shipped it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Contributions
&lt;/h2&gt;

&lt;p&gt;We're always collecting issues and feature requests on &lt;a href="https://github.com/Releem/mysqlconfigurer" rel="noopener noreferrer"&gt;our GitHub&lt;/a&gt;. Here's where you can contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issues&lt;/strong&gt; – If you encounter any problems or bugs, report them &lt;a href="https://github.com/Releem/mysqlconfigurer/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Requests&lt;/strong&gt; – Have an idea to make Releem even better? Share your suggestions &lt;a href="https://github.com/Releem/mysqlconfigurer/discussions" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Updates to Releem Dashboard
&lt;/h2&gt;

&lt;p&gt;This month’s dashboard updates concentrate on making Query Analytics easier to work with and streamlining how you handle optimization recommendations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Filtering control statements&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now filter out control statements such as &lt;strong&gt;COMMIT, USE&lt;/strong&gt;, and similar commands inside Query Analytics. This helps isolate performance-relevant queries without noise from session or transaction control statements (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/457" rel="noopener noreferrer"&gt;Closes #457&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g9q1s9o9xzhhqxd3hkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g9q1s9o9xzhhqxd3hkw.png" alt=" " width="800" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improved query optimization workflow&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now delete optimization recommendations directly from the interface, with a confirmation step to prevent accidental removal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tfh344hvv9wuned95z6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tfh344hvv9wuned95z6.png" alt=" " width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Filter queries by status&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Easily filter optimization recommendations by status to focus only on discovered, custom or optimized items.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0z4gjbdpyn3m6ees1cir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0z4gjbdpyn3m6ees1cir.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optional schema checks&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now disable schema checks when they’re not relevant to your database environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F119nlaquseygen13tb1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F119nlaquseygen13tb1u.png" alt=" " width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google authentication&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google Sign-In is now available during new account registration, making it faster to get started with Releem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Platform
&lt;/h2&gt;

&lt;p&gt;We pushed out several fixes this month to improve reliability and compatibility:&lt;/p&gt;

&lt;p&gt;Fixed duplicate entry errors during multiple team member invitations (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/489" rel="noopener noreferrer"&gt;Closes #489&lt;/a&gt;).&lt;br&gt;
Fixed InnoDB index key size detection logic (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/487" rel="noopener noreferrer"&gt;Closes #487&lt;/a&gt;).&lt;br&gt;
Fixed configuration application issues for RDS MariaDB instances (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/484" rel="noopener noreferrer"&gt;Closes #484&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Agent
&lt;/h2&gt;

&lt;p&gt;We simplified Releem Agent installation for WHM/cPanel environments.&lt;/p&gt;

&lt;p&gt;The agent received security and performance improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Updated Go and dependencies&lt;/strong&gt; to the latest versions, resolving critical and high-severity CVEs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Removed envsubst&lt;/strong&gt; from the Agent image to eliminate unnecessary vulnerability exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed an issue that triggered full table scans&lt;/strong&gt; during constraint metadata collection, reducing impact on database servers (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/493" rel="noopener noreferrer"&gt;Closes #493&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Events
&lt;/h2&gt;

&lt;p&gt;We spoke at AI DBA Conf and MariaDB Day in Brussels during FOSDEM, connecting with DBAs and engineers focused on automation and database performance.&lt;/p&gt;

&lt;p&gt;If you missed these sessions, you can watch them here: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?si=spwZxIEJtA7s5bS3&amp;amp;v=CXTJLkv9ZIk&amp;amp;feature=youtu.be" rel="noopener noreferrer"&gt;From Manual DBA Work to Safe Automation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/NJue5xXyFkQ?si=1YZLokD5rfz5GbZH" rel="noopener noreferrer"&gt;SQL Query Optimization Without Query Ownership&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mysql</category>
      <category>database</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>When “MySQL” isn’t actually MySQL</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Tue, 17 Feb 2026 14:23:57 +0000</pubDate>
      <link>https://forem.com/drupaladmin/when-mysql-isnt-actually-mysql-4o4f</link>
      <guid>https://forem.com/drupaladmin/when-mysql-isnt-actually-mysql-4o4f</guid>
      <description>&lt;p&gt;I was recently looking at engine distribution across a few thousand production database instances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluaw5g5c2imueb8l3wpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluaw5g5c2imueb8l3wpd.png" alt="Database servers statistics by Releem" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What stood out is that some teams believed they were running MySQL, but were actually on MariaDB.&lt;/p&gt;

&lt;p&gt;In most cases this isn’t confusion. It’s environment defaults.&lt;/p&gt;

&lt;p&gt;Many Linux distributions replaced MySQL with MariaDB years ago. Hosting panels and cloud images often install MariaDB by default. The mysql client works the same. ORMs abstract most differences. From the application layer, everything looks like “MySQL.”&lt;/p&gt;

&lt;p&gt;Is your database engine an intentional architectural choice, or something inherited from your base image or hosting stack?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>mysql</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Releem 2025 Recap: Building a Database Advisor for Developer Teams</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Thu, 22 Jan 2026 15:20:10 +0000</pubDate>
      <link>https://forem.com/drupaladmin/releem-2025-recap-building-a-database-advisor-for-developer-teams-5fi1</link>
      <guid>https://forem.com/drupaladmin/releem-2025-recap-building-a-database-advisor-for-developer-teams-5fi1</guid>
      <description>&lt;p&gt;Hello friends 👋&lt;/p&gt;

&lt;p&gt;2025 was the year we finally had the team we needed.&lt;/p&gt;

&lt;p&gt;For most of Releem's existence, I was the bottleneck. Features sat in backlogs. Support tickets aged. Every decision waited on me. &lt;/p&gt;

&lt;p&gt;Getting &lt;a href="https://www.linkedin.com/in/victor-podkopaev/" rel="noopener noreferrer"&gt;Victor&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/dmitrii-kochetov-563a36354/" rel="noopener noreferrer"&gt;Dmitrii&lt;/a&gt; full-time changed that overnight. Features moved from idea to production faster, and more time went into tickets, feedback, and edge cases.&lt;/p&gt;

&lt;p&gt;We also welcomed the &lt;a href="https://releem.com/blog/tuningwizard-joins-releem" rel="noopener noreferrer"&gt;TuningWizard team and their founder Gabriel&lt;/a&gt; to Releem. Their hands-on SQL optimization experience directly shaped how we analyze queries today and pushed us to raise the bar on accuracy and safety.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8ikt1m17zadyqhl9eki.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8ikt1m17zadyqhl9eki.jpg" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The scale still surprises me. We reached milestones that honestly felt far away when we started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;348 billion SQL queries collected&lt;/li&gt;
&lt;li&gt;808 million API requests&lt;/li&gt;
&lt;li&gt;714,000 schema recommendations&lt;/li&gt;
&lt;li&gt;6 million query recommendations&lt;/li&gt;
&lt;li&gt;571,000 deadlocks detected and analyzed&lt;/li&gt;
&lt;li&gt;53,000 config tuning suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Around 1,000 new users joined along the way 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  What we shipped
&lt;/h2&gt;

&lt;p&gt;On the product side we spent most of the year improving visibility into problems that usually surface too late, and adding automation that is safe to trust in live systems. This included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time deadlock detection with root cause analysis&lt;/li&gt;
&lt;li&gt;Live visibility into blocking and long-running queries&lt;/li&gt;
&lt;li&gt;Schema checks for missing, unused, and redundant indexes&lt;/li&gt;
&lt;li&gt;Full configuration history with before-and-after performance metrics&lt;/li&gt;
&lt;li&gt;Full support for GCP Cloud SQL&lt;/li&gt;
&lt;li&gt;Per-server access control and user roles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Oh, and Dark Mode🌙. Users &lt;em&gt;really&lt;/em&gt; wanted dark mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thank you
&lt;/h2&gt;

&lt;p&gt;Behind the scenes, the team ran more than &lt;strong&gt;100 live demos&lt;/strong&gt;, answered over &lt;strong&gt;1,400 support questions&lt;/strong&gt;, shipped &lt;strong&gt;1,292 commits&lt;/strong&gt;, and &lt;strong&gt;deployed the platform roughly 200 times&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;None of this would be possible without everyone who was willing to try something new, report issues, ask hard questions, and push us to do better. Thank you to our early adopters, our customers, and the broader database community for the trust and feedback throughout the year ❤️&lt;/p&gt;

&lt;p&gt;We are proud of what we built in 2025 and excited to keep going in 2026.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>database</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What's New At Releem - November 2025</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Wed, 24 Dec 2025 22:18:39 +0000</pubDate>
      <link>https://forem.com/drupaladmin/whats-new-at-releem-november-2025-2lk2</link>
      <guid>https://forem.com/drupaladmin/whats-new-at-releem-november-2025-2lk2</guid>
      <description>&lt;p&gt;Another month wrapped up at Releem, and this month we focused on removing friction in everyday workflows.&lt;/p&gt;

&lt;p&gt;We finally brought &lt;strong&gt;Dark Mode&lt;/strong&gt; to Releem Dashboard 🎉 It took longer than expected, with small UI details needing clean up before it was ready to ship. We quietly rolled the feature out, but a few dozen users enabled it right away!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr0iij8uru1x0tnw9qfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr0iij8uru1x0tnw9qfc.png" alt=" " width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also shipped &lt;strong&gt;Dashboard Sharing&lt;/strong&gt; 💪 This was something we initially treated as a lower-priority request, but it kept coming up. Eventually it became clear it was blocking teams from using Releem together, so we moved it up and shipped it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Contributions
&lt;/h2&gt;

&lt;p&gt;We're always collecting issues and feature requests on &lt;a href="https://github.com/Releem/mysqlconfigurer" rel="noopener noreferrer"&gt;our GitHub&lt;/a&gt;. Here's where you can contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Issues&lt;/strong&gt; – If you encounter any problems or bugs, report them &lt;a href="https://github.com/Releem/mysqlconfigurer/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Requests&lt;/strong&gt; – Have an idea to make Releem even better? Share your suggestions &lt;a href="https://github.com/Releem/mysqlconfigurer/discussions" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Updates to Releem Dashboard
&lt;/h2&gt;

&lt;p&gt;We’ve shipped a set of dashboard improvements focused on usability, collaboration, and the workflows you use everyday:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dashboard Sharing &amp;amp; User Roles&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now invite users to shared dashboards per server through server Settings and assign roles (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/279" rel="noopener noreferrer"&gt;Issue #279&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Viewer – Read-only access to dashboard and insights&lt;/li&gt;
&lt;li&gt;Editor – Can change settings and apply recommendations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmy37ywu8fw3625ebkq3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmy37ywu8fw3625ebkq3u.png" alt=" " width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dark Mode&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now apply a dark theme to the dashboard. Dark Mode has always had a dedicated group of users who overwhelmingly prefer it to light mode. We’re glad to finally make it available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nmhpe5lewwvht8mrb1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nmhpe5lewwvht8mrb1j.png" alt=" " width="800" height="891"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Export Process List to CSV&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now export the process list directly to CSV, making it easier to analyze queries, share snapshots, and include data in reports and incident reviews (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/437" rel="noopener noreferrer"&gt;Issue #437&lt;/a&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improved Apply Workflow&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To reduce confusion during configuration changes, the &lt;strong&gt;Apply&lt;/strong&gt; button has been moved directly into the &lt;strong&gt;Recommended Configuration&lt;/strong&gt; popup. This keeps review and action in one place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqh9m94nvq8multc9zvr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqh9m94nvq8multc9zvr2.png" alt=" " width="800" height="789"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Platform
&lt;/h2&gt;

&lt;p&gt;Several fixes this month focused on recommendation accuracy and schema analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Smarter Buffer Pool Recommendations&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Releem now takes overall system memory pressure into account when generating &lt;strong&gt;innodb_buffer_pool_size&lt;/strong&gt; recommendations. When RAM usage is already high, recommended values are scaled down instead of being calculated solely from total available memory. This prevents over-allocation in constrained environments and reduces the risk of memory pressure (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/481" rel="noopener noreferrer"&gt;Issue #481&lt;/a&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Primary Key Detection Fix&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Resolved an issue where tables could be flagged as missing a primary key where the Agent has limited schema permissions. Previously, missing column-level metadata could lead to false “no primary key” warnings. The updated logic now handles these cases correctly (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/475" rel="noopener noreferrer"&gt;Issue #475&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Expanded Initial Configuration Options&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We added support for generating an initial MySQL configuration directly from the Releem Agent. With a single command, the agent analyzes server hardware and creates a sensible baseline config for new or default MySQL installations, before workload-based tuning kicks in. You can find full details in the &lt;a href="https://docs.releem.com/configuration-tuning/initial-mysql-configuration" rel="noopener noreferrer"&gt;updated documentation&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>mysql</category>
      <category>devops</category>
      <category>saas</category>
    </item>
    <item>
      <title>What’s New At Releem - October 2025</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Wed, 12 Nov 2025 14:39:26 +0000</pubDate>
      <link>https://forem.com/drupaladmin/whats-new-at-releem-october-2025-4ei0</link>
      <guid>https://forem.com/drupaladmin/whats-new-at-releem-october-2025-4ei0</guid>
      <description>&lt;p&gt;Another month in the books – and it’s been a great one. Highlights include support for GCP Cloud SQL, enhanced servers overview for multi-server management, and a round of Agent improvements focused on stability and lighter performance impact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fks74152p8ze87k3v91gk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fks74152p8ze87k3v91gk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kicking things off, we’re excited to share that the &lt;strong&gt;TuningWizard&lt;/strong&gt; team has officially joined Releem, bringing their expertise in database optimization and performance analytics directly into what we’re building together.&lt;/p&gt;

&lt;p&gt;Led by &lt;strong&gt;Gabriel Ciciliani&lt;/strong&gt;, TuningWizard has spent the past four years perfecting SQL Query Optimization, helping users identify costly queries and improve performance with precision. This partnership traces back to an introduction by &lt;strong&gt;Peter Zaitsev&lt;/strong&gt;, founder of Percona, which sparked a collaboration that’s been growing ever since. You can read more about how the teams are merging efforts in our &lt;a href="https://releem.com/blog/tuningwizard-joins-releem" rel="noopener noreferrer"&gt;official announcement&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Contributions
&lt;/h2&gt;

&lt;p&gt;We're always collecting issues and feature requests on &lt;a href="https://github.com/Releem/mysqlconfigurer" rel="noopener noreferrer"&gt;our GitHub&lt;/a&gt;. Here's where you can contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Issues&lt;/strong&gt; – If you encounter any problems or bugs, report them &lt;a href="https://github.com/Releem/mysqlconfigurer/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Requests&lt;/strong&gt; – Have an idea to make Releem even better? Share your suggestions &lt;a href="https://github.com/Releem/mysqlconfigurer/discussions" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Updates to Releem Dashboard
&lt;/h2&gt;

&lt;p&gt;We’ve added new controls to simplify &lt;strong&gt;multi-server management&lt;/strong&gt; and speed up configuration workflows across all your databases:&lt;/p&gt;

&lt;h3&gt;
  
  
  Servers Overview Bar
&lt;/h3&gt;

&lt;p&gt;Provides a quick summary of total servers and pending configurations directly on the &lt;strong&gt;Servers&lt;/strong&gt; page, improving visibility and navigation for teams managing multiple instances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67s8un47qvg24ch5cws4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67s8un47qvg24ch5cws4.png" alt=" " width="800" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  One-Click Apply Across Servers
&lt;/h3&gt;

&lt;p&gt;You can now apply configuration recommendations to all servers simultaneously. This reduces repetitive work and saves you even more time (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/452" rel="noopener noreferrer"&gt;Feature request #452&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw52t7hq5bdj7wepimqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw52t7hq5bdj7wepimqb.png" alt=" " width="781" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Status Indicators
&lt;/h3&gt;

&lt;p&gt;Adds clear visual markers for &lt;strong&gt;Error&lt;/strong&gt; and &lt;strong&gt;Unapplied&lt;/strong&gt; configurations, helping you see what needs attention at a glance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatic Restart Option
&lt;/h3&gt;

&lt;p&gt;A new “Restart if needed” checkbox allows Releem to safely handle restarts during configuration updates without your intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Platform
&lt;/h2&gt;

&lt;p&gt;We’ve expanded Releem’s platform with smarter indexing and broader cloud coverage. This update helps optimize complex queries and brings full support for Google Cloud SQL alongside AWS RDS:&lt;/p&gt;

&lt;h3&gt;
  
  
  GCP Cloud SQL Support
&lt;/h3&gt;

&lt;p&gt;Adds full integration for Google Cloud’s managed MySQL and PostgreSQL databases, joining existing AWS RDS and Azure Database compatibility (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/259" rel="noopener noreferrer"&gt;Feature request #259&lt;/a&gt;). Enterprise customers can now enjoy complete cloud provider coverage with Releem.&lt;/p&gt;

&lt;h3&gt;
  
  
  GROUP BY / ORDER BY Index Detection
&lt;/h3&gt;

&lt;p&gt;Now identifies missing indexes in queries that aggregate or sort large result sets, cutting down on processing time for reporting and analytics (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/441" rel="noopener noreferrer"&gt;Issue #441&lt;/a&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looks at real query history to pinpoint where indexes will make the biggest difference and suggest practical fixes.&lt;/li&gt;
&lt;li&gt;In testing, these improvements have delivered 30-50% faster query performance for affected queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Index Identification Accuracy
&lt;/h3&gt;

&lt;p&gt;Fixed an issue where optimization recommendations remained marked as “Discovered” even after indexes were created. The platform now correctly tracks index changes across multiple databases and updates the status to “Evaluating” once the fix is applied (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/474" rel="noopener noreferrer"&gt;Issue #474&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Agent
&lt;/h2&gt;

&lt;p&gt;We’ve improved Releem Agent to make it more accurate, responsive, and efficient. It now handles version changes and server reporting more smoothly while using fewer resources overall.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Upgrade Detection
&lt;/h3&gt;

&lt;p&gt;The Agent now recognizes the exact MySQL / MariaDB / Percona version when the database is upgraded and updates recommendations to match. This prevents outdated or irrelevant suggestions when variables are added, changed, or deprecated in newer releases (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/408" rel="noopener noreferrer"&gt;Issue #408&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Server Visibility Fix
&lt;/h3&gt;

&lt;p&gt;Now registers servers in the Releem Dashboard immediately after startup. Previously, some servers remained invisible for hours if the Agent existed during early metric collection (&lt;a href="https://github.com/Releem/mysqlconfigurer/issues/411" rel="noopener noreferrer"&gt;Issue #411&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimized Data Collection
&lt;/h3&gt;

&lt;p&gt;Streamlined how query examples and process data are gathered. This has lowered Agent resource consumption by 25% and sped up metric collection. Monitoring now runs with less impact on production workloads.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>mysql</category>
      <category>database</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What's New At Releem - September 2025</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Tue, 28 Oct 2025 09:49:24 +0000</pubDate>
      <link>https://forem.com/drupaladmin/whats-new-at-releem-september-2025-1dmj</link>
      <guid>https://forem.com/drupaladmin/whats-new-at-releem-september-2025-1dmj</guid>
      <description>&lt;p&gt;September was a month of momentum. We focused on problems that frustrate every DBA: deadlocks, incomplete visibility, and cloud deployment quirks. We’ve shipped real-time deadlock monitoring, expanded the weekly reports, and fixed key issues with Releem Agent for RDS.&lt;/p&gt;

&lt;p&gt;Beyond the product, our company flag reached &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7371856454883966976/" rel="noopener noreferrer"&gt;Kazbek Mountain&lt;/a&gt; (5,047m and one of the highest peaks in the Caucasus). It’s a small but symbolic reminder of how far we’ve come as a team and community. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyp6d30z861ugh63vtumw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyp6d30z861ugh63vtumw.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And while one part of the team was climbing mountains, &lt;a href="https://www.linkedin.com/posts/roman-agabekov_proud-of-the-team-my-co-founders-dmytrii-activity-7368326799723864066-Act3/" rel="noopener noreferrer"&gt;our co-founders Dmytrii Kochetov and Victor Podkopaev&lt;/a&gt; represented at Percona University Yerevan 2025. They shared insights into how LLMs can help with database performance tuning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Contributions
&lt;/h2&gt;

&lt;p&gt;We're always collecting issues and feature requests on &lt;a href="https://github.com/Releem/mysqlconfigurer" rel="noopener noreferrer"&gt;our GitHub&lt;/a&gt;. Here's where you can contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issues&lt;/strong&gt; – If you encounter any problems or bugs, report them &lt;a href="https://github.com/Releem/mysqlconfigurer/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Requests&lt;/strong&gt; – Have an idea to make Releem even better? Share your suggestions &lt;a href="https://github.com/Releem/mysqlconfigurer/discussions" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Updates to Releem Dashboard
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Deadlock Monitoring
&lt;/h3&gt;

&lt;p&gt;After many requests, real-time MySQL and MariaDB deadlock detection has landed (&lt;a href="https://github.com/Releem/mysqlconfigurer/discussions/293" rel="noopener noreferrer"&gt;Issue #293&lt;/a&gt;). No more hunting through logs. You’ll now see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instant alerts when a deadlock occurs&lt;/li&gt;
&lt;li&gt;A detailed breakdown of conflicting transactions&lt;/li&gt;
&lt;li&gt;Actionable recommendations to prevent recurrence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://releem.com/blog/mysql-deadlock-detection" rel="noopener noreferrer"&gt;Read our full deep-dive on deadlock detection to learn more.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgcauz2hcm3skmo6p5zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgcauz2hcm3skmo6p5zv.png" alt=" " width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fs6hiofk7sml4a8dz59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fs6hiofk7sml4a8dz59.png" alt=" " width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  New Weekly Reports
&lt;/h3&gt;

&lt;p&gt;Weekly reports now give a richer snapshot of your server health including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expanded Health Checks – System, MyISAM/InnoDB, Memory, Queries/Logs&lt;/li&gt;
&lt;li&gt;A new Security Check summary with severity levels&lt;/li&gt;
&lt;li&gt;Cleaner formatting for quick scanning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F874chcumfjv0y5mp7uif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F874chcumfjv0y5mp7uif.png" alt=" " width="800" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Agent
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Resolved AWS Security Hub Alerts
&lt;/h3&gt;

&lt;p&gt;Releem Agent was previously being flagged by AWS Security Hub. The new update corrects those triggers (&lt;a href="https://github.com/releem/mysqlconfigurer/issues/415" rel="noopener noreferrer"&gt;Issue #415&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved EC2 Deployment Documentation
&lt;/h3&gt;

&lt;p&gt;We’ve added guidance for monitoring multiple RDS instances from one EC2 instance. This reduces setup overhead and cuts Fargate resource costs. Read the documentation &lt;a href="https://docs.releem.com/releem-agent/installation-guides/cloud-managed-aws-rds-automatic-installation" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stabilized Setup Process
&lt;/h3&gt;

&lt;p&gt;Fixed an issue that caused the Agent to restart MySQL/MariaDB unnecessarily during initial installation. It was annoying everyone and we’re glad it’s no longer a problem (&lt;a href="https://github.com/releem/mysqlconfigurer/issues/413" rel="noopener noreferrer"&gt;Issue #413&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  News You Might Have Missed
&lt;/h2&gt;

&lt;p&gt;Laravel News recently covered a Releem study on how MySQL’s default settings can drag down performance for Laravel apps. It’s a great read if you want to learn more about what’s hiding behind “out-of-the-box” configurations. &lt;a href="https://laravel-news.com/the-hidden-cost-of-mysql-defaults-in-laravel-apps" rel="noopener noreferrer"&gt;The Hidden Cost of MySQL Defaults in Laravel Apps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0c3uug1fllfjno7fc6nj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0c3uug1fllfjno7fc6nj.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>mysql</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>MySQL Deadlock Detection: How to Find and Fix Transaction Conflicts</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Mon, 13 Oct 2025 15:34:17 +0000</pubDate>
      <link>https://forem.com/drupaladmin/mysql-deadlock-detection-how-to-find-and-fix-transaction-conflicts-5159</link>
      <guid>https://forem.com/drupaladmin/mysql-deadlock-detection-how-to-find-and-fix-transaction-conflicts-5159</guid>
      <description>&lt;p&gt;Understand, detect, and resolve deadlocks in your database with Releem’s automated monitoring and alerting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a deadlock?
&lt;/h2&gt;

&lt;p&gt;A deadlock is a situation where two or more transactions are each waiting for the other to release a lock. Because neither transaction can proceed, they become stuck. MySQL has a built-in mechanism to detect deadlocks when the &lt;strong&gt;innodb_deadlock_detect&lt;/strong&gt; setting is enabled, which is the default in most setups. When MySQL detects a deadlock, it automatically rolls back one of the transactions to break the loop.&lt;/p&gt;

&lt;p&gt;Deadlocks are not always a sign of a bug. They can occur in any system with high concurrency or complex workflows involving multiple statements. However, when deadlocks happen repeatedly or appear in the same workflow, they often signal a deeper issue in how transactions are structured, how indexes are applied, or how application logic interacts with the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to monitor deadlocks manually
&lt;/h2&gt;

&lt;p&gt;If you want to manually check for a deadlock on your MySQL server, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SHOW ENGINE INNODB STATUS\G
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for the section labeled &lt;strong&gt;LATEST DETECTED DEADLOCK&lt;/strong&gt;. Examine the output for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;------------------------
LATEST DETECTED DEADLOCK
------------------------
2025-09-19 21:42:10 0x7f2cd67fa700
*** (1) TRANSACTION:
TRANSACTION 24692, ACTIVE 3 sec starting index read
mysql tables in use 2, locked 2
LOCK WAIT 5 lock struct(s), heap size 1128, 3 row lock(s)
MySQL thread id 127, OS thread handle 139832472479488, query id 44118 localhost appuser updating
UPDATE order_items 
  SET qty = qty + 1 
  WHERE order_id = 500 AND id = 1001
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 121 page no 145 n bits 72 index `PRIMARY` of table `shop`.`orders` trx id 24692 
lock_mode X locks rec but not gap waiting
Record lock, heap no 7 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 4; id=500
 1: ... (hidden/internal fields omitted)

*** (2) TRANSACTION:
TRANSACTION 24691, ACTIVE 4 sec updating or deleting
4 lock struct(s), heap size 1136, 4 row lock(s)
MySQL thread id 123, OS thread handle 139832488126208, query id 44116 localhost appuser updating
UPDATE orders 
  SET status = 'processed' 
  WHERE id = 500
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 121 page no 145 n bits 72 index `PRIMARY` of table `shop`.`orders` trx id 24691 
lock_mode X locks rec but not gap
Record lock, heap no 7 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 4; id=500
 1: ... (hidden/internal fields omitted)
*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 122 page no 88 n bits 80 index `fk_order_items_order_id` of table `shop`.`order_items` trx id 24691 
lock_mode X locks rec but not gap waiting
Record lock, heap no 12 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
 0: len 4; order_id=500
 1: ... (hidden/internal fields omitted)

*** WE ROLL BACK TRANSACTION (1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Transaction IDs and SQL queries&lt;/li&gt;
&lt;li&gt;Lock types and what each transaction was waiting for&lt;/li&gt;
&lt;li&gt;Table names and indexes involved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This manual approach works, but it’s reactive, time-consuming, and only shows the latest deadlock. You also won’t get historical data unless you’re already logging it elsewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deadlock types and how to fix them
&lt;/h2&gt;

&lt;p&gt;Deadlocks can be grouped by the type of operation or lock pattern that caused them. Different deadlocks require different fixes. Recognizing the type helps you identify the underlying cause and choose the right fix. Here are the most common categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Update-Update deadlock
&lt;/h3&gt;

&lt;p&gt;Occurs when two transactions update the same rows but in a different order. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transaction A updates &lt;strong&gt;orders&lt;/strong&gt;, then &lt;strong&gt;order_items&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Transaction B updates &lt;strong&gt;order_items&lt;/strong&gt;, then &lt;strong&gt;orders&lt;/strong&gt;.
Since both are waiting on each other’s locks, the transactions are stuck.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Access and update rows in the same order in every transaction.&lt;/li&gt;
&lt;li&gt;Standardize your transaction logic across your application.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2. Select-for-Update deadlock
&lt;/h3&gt;

&lt;p&gt;This happens when one transaction uses &lt;strong&gt;SELECT ... FOR UPDATE&lt;/strong&gt; to lock rows that another transaction is trying to update or delete. This often occurs in job queues or task schedulers that select rows for processing while other workers modify or remove the same data.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Only use &lt;strong&gt;FOR UPDATE&lt;/strong&gt; when necessary.&lt;/li&gt;
&lt;li&gt;Consider &lt;strong&gt;LOCK IN SHARE MODE&lt;/strong&gt; if full write-locks aren’t needed.&lt;/li&gt;
&lt;li&gt;Separate row selection and modification into different steps when possible.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3. Insert Auto Increment deadlock
&lt;/h3&gt;

&lt;p&gt;InnoDB places a special lock (called the auto-inc lock) on the end of the index when inserting into a table with an &lt;strong&gt;AUTO_INCREMENT&lt;/strong&gt; column. If multiple transactions insert rows and then touch related tables, they can block each other in unpredictable ways.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Move insert operations to the end of your transaction.&lt;/li&gt;
&lt;li&gt;Use bulk inserts to reduce contention.&lt;/li&gt;
&lt;li&gt;Avoid mixing inserts with updates on related tables in the same transaction.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4. Gap lock deadlock
&lt;/h3&gt;

&lt;p&gt;InnoDB uses gap locks to lock ranges of index values for &lt;strong&gt;SELECT ... FOR UPDATE&lt;/strong&gt;, &lt;strong&gt;DELETE&lt;/strong&gt;, or &lt;strong&gt;UPDATE&lt;/strong&gt; queries that use inequality or range filters. These range locks can block other inserts or updates that try to work within the same range. This is common with pagination, uniqueness checks, or complex filters.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Use equality comparisons instead of ranges if possible.&lt;/li&gt;
&lt;li&gt;Reduce the locked range by adding filters or more specific indexes.&lt;/li&gt;
&lt;li&gt;Consider &lt;strong&gt;READ COMMITTED&lt;/strong&gt; isolation level to reduce the range lock scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5. Insert Intention deadlock
&lt;/h3&gt;

&lt;p&gt;An insert intention lock is a type of gap lock set by &lt;strong&gt;INSERT&lt;/strong&gt; operations prior to row insertion. This lock signals the intent to insert in such a way that multiple transactions inserting into the same index gap need not wait for each other if they are not inserting at the same position within the gap.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Use &lt;strong&gt;INSERT IGNORE&lt;/strong&gt;, &lt;strong&gt;REPLACE&lt;/strong&gt;, or &lt;strong&gt;INSERT ... ON DUPLICATE KEY UPDATE&lt;/strong&gt; if the inserted row may already exist.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;SELECT ... FOR UPDATE&lt;/strong&gt; beforehand to lock the row and avoid conflicts.&lt;/li&gt;
&lt;li&gt;Reduce the locked range by adding filters or more specific indexes.&lt;/li&gt;
&lt;li&gt;Consider &lt;strong&gt;READ COMMITTED&lt;/strong&gt; isolation level to reduce the range lock scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  6. Insert same PK deadlock
&lt;/h3&gt;

&lt;p&gt;Plain &lt;code&gt;INSERT&lt;/code&gt; is not idempotent when multiple workers try to write the same key at once . Two writers collide on the same PRIMARY key and deadlock.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Change the statement to one of these patterns so the second writer doesn’t need to “win” a brand-new insert: &lt;strong&gt;INSERT IGNORE&lt;/strong&gt;, &lt;strong&gt;REPLACE&lt;/strong&gt;, or &lt;strong&gt;INSERT ... ON DUPLICATE KEY UPDATE&lt;/strong&gt; if the inserted row may already exist. &lt;/li&gt;
&lt;li&gt;Reduce the locked range by adding filters or more specific indexes.&lt;/li&gt;
&lt;li&gt;Consider &lt;strong&gt;READ COMMITTED&lt;/strong&gt; isolation level to reduce the range lock scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  7. Foreign key deadlock
&lt;/h3&gt;

&lt;p&gt;This affects operations where one transaction deletes or updates a parent row, and another interacts with the child table. If referential integrity checks are triggered mid-transaction, InnoDB may require shared or exclusive locks on multiple tables, resulting in a deadlock.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Always delete or update related rows in a consistent parent-first or child-first order.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;ON DELETE CASCADE&lt;/strong&gt; or &lt;strong&gt;ON UPDATE CASCADE&lt;/strong&gt; appropriately.&lt;/li&gt;
&lt;li&gt;Minimize transactional overlap on dependent tables.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  8. Long transaction deadlock
&lt;/h3&gt;

&lt;p&gt;A transaction that touches many rows or tables and holds locks for a long time can easily deadlock with smaller, faster transactions. This isn’t necessarily a logic bug, but sometimes it simply happens due to bad timing under high load.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Break large transactions into smaller chunks.&lt;/li&gt;
&lt;li&gt;Commit frequently when possible.&lt;/li&gt;
&lt;li&gt;Avoid idle sessions within a transaction.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  9. Lock escalation deadlock
&lt;/h3&gt;

&lt;p&gt;Though relatively rare in MySQL, some workloads cause escalation-like behavior when multiple row-level locks start conflicting across transactions in unexpected patterns. These usually surface in high-concurrency systems with heavy writes and insufficient indexing.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to fix:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Add indexes to reduce full scans and write lock contention.&lt;/li&gt;
&lt;li&gt;Analyze patterns in locking and restructure queries to reduce overlap.&lt;/li&gt;
&lt;li&gt;Consider queuing or scheduling batch operations to run sequentially.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How Releem helps with deadlock monitoring
&lt;/h2&gt;

&lt;p&gt;Releem's Deadlock Monitoring Service continuously checks for deadlocks by analyzing MySQL's internal reports. It captures complete information about every detected deadlock and makes that information accessible and actionable.&lt;/p&gt;

&lt;p&gt;Here’s what Releem’s deadlock monitoring does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically detects all deadlocks in real time using &lt;strong&gt;SHOW ENGINE INNODB STATUS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Captures all relevant information, including SQL statements, table names, lock types, and indexes&lt;/li&gt;
&lt;li&gt;Sends notifications through your preferred channels&lt;/li&gt;
&lt;li&gt;Stores the full history of deadlocks, accessible through the Releem web interface.&lt;/li&gt;
&lt;li&gt;Provides practical guidance to help you understand the lock type and fix the root cause&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What you’ll see in a deadlock alert
&lt;/h3&gt;

&lt;p&gt;When Releem detects a deadlock, it sends an alert that includes everything you need to start investigating. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exact time the deadlock occurred&lt;/li&gt;
&lt;li&gt;The full SQL statement for the transaction that was rolled back&lt;/li&gt;
&lt;li&gt;The SQL statement that blocked it&lt;/li&gt;
&lt;li&gt;The table names involved&lt;/li&gt;
&lt;li&gt;The type of locks that were in conflict&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra0gmcdctz4t08dh2t0n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fra0gmcdctz4t08dh2t0n.jpg" alt=" " width="800" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to respond to a Releem deadlock notification
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Review the alert
&lt;/h3&gt;

&lt;p&gt;Start by examining the SQL statements in the alert. Look at the tables involved and the type of lock that caused the block. This gives you an immediate view of what was happening in the database at the time of the deadlock.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Find the code
&lt;/h3&gt;

&lt;p&gt;Use the query text and table names to trace the transaction back to the relevant part of your codebase. If the query comes from an ORM, enable SQL logging to get the original code. Most ORMs provide a way to log generated SQL, such as enabling echo=True in SQLAlchemy or enabling query logs in Laravel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Apply Fix
&lt;/h3&gt;

&lt;p&gt;Once you’ve identified the query and type of deadlock, apply the corresponding fix based on the lock pattern involved.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to prevent deadlocks in the future
&lt;/h2&gt;

&lt;p&gt;Deadlocks aren’t always avoidable, especially in high-concurrency environments. But you can reduce how often they occur and how disruptive they are by structuring your transactions and queries more deliberately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access tables and rows in a consistent order&lt;/strong&gt;: Inconsistent ordering is one of the most common causes of deadlocks. Always access tables and rows in the &lt;strong&gt;same order&lt;/strong&gt; across all parts of your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use proper indexes on frequently updated or filtered columns&lt;/strong&gt;: When queries scan too many rows due to missing indexes, they hold locks longer than necessary. This increases the likelihood of conflicting transactions. Add indexes to support any columns used in joins, updates, deletes, and &lt;strong&gt;SELECT ... FOR UPDATE&lt;/strong&gt; queries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep transactions short and commit as early as possible&lt;/strong&gt;: Long-running transactions hold locks open and increase contention. Avoid starting a transaction and then performing multiple slow operations or leaving the session idle. If changes are unrelated, split them into separate transactions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid combining SELECT FOR UPDATE and INSERT statements in the same transaction when possible&lt;/strong&gt;: Locking existing rows and writing new ones can create complex lock dependencies, especially in tables with AUTO_INCREMENT values or triggers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consider adjusting your isolation level&lt;/strong&gt;: The default isolation level in MySQL, &lt;strong&gt;REPEATABLE READ&lt;/strong&gt;, holds more locks than &lt;strong&gt;READ COMMITTED&lt;/strong&gt;. If you don’t need consistent snapshots for the duration of a transaction, switching to &lt;strong&gt;READ COMMITTED&lt;/strong&gt; can help reduce lock contention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;As a last resort, serialize critical sections with explicit table locking&lt;/strong&gt;: If nothing else helps, you can use &lt;strong&gt;LOCK TABLES&lt;/strong&gt; to manually control access to entire tables. This approach guarantees exclusive access, but it comes with tradeoffs. You must start with &lt;strong&gt;SET autocommit = 0&lt;/strong&gt;, lock the tables, perform the operations, then commit and release the locks. It should only be used in tightly scoped, low-volume parts of the application where deadlocks are unavoidable through normal means.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Releem makes deadlocks easier to deal with
&lt;/h2&gt;

&lt;p&gt;Deadlocks are a natural part of working with transactional databases, but that doesn’t mean you have to treat them as a black box. With Releem’s Deadlock Detection, you get automated early warnings, full context, and clear next steps. It reduces the time you spend diagnosing blocking issues and gives you visibility into the health of your transaction patterns.&lt;/p&gt;

&lt;p&gt;If you're ready to stop chasing deadlocks after the fact, turn on Deadlock Detection in your Releem dashboard. It takes care of the tracking so you can focus on fixing the real issues.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>database</category>
      <category>webdev</category>
      <category>mysql</category>
    </item>
    <item>
      <title>ChatGPT Alternative for SQL Query Optimization</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Mon, 13 Oct 2025 10:53:47 +0000</pubDate>
      <link>https://forem.com/drupaladmin/chatgpt-alternative-for-sql-query-optimization-2mbi</link>
      <guid>https://forem.com/drupaladmin/chatgpt-alternative-for-sql-query-optimization-2mbi</guid>
      <description>&lt;p&gt;Working with SQL query optimizers powered by LLMs has its ups and downs. I’ve noticed that even with tools like ChatGPT or Claude, the process can feel awkward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a prompt → Paste the query → Wait → Refine prompt → Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This cycle is fine once or twice, but quickly becomes tedious — especially for long or complex queries.&lt;/p&gt;

&lt;p&gt;So I built a tool that removes prompt engineering from the equation and focuses purely on helping you analyze and optimize SQL queries.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Paste your SQL query
2. Select your database (PostgreSQL, MySQL, SQL Server, etc.)
3. Click “Analyze”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The screenshot:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7qn0etf2c8822wi5fn0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7qn0etf2c8822wi5fn0.png" alt="SQLito Paste Query" width="800" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  You’ll Get
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- ✅ A list of suggestions with brief reasoning
- 🔄 A rewritten (optimized) version of your query
- 🎯 A confidence tag for each recommendation (High / Medium / Low)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The screenshot:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wf0mk78f3i58m85m0qq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wf0mk78f3i58m85m0qq.png" alt="SQLito Analysis Results" width="800" height="888"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Want deeper insights?
&lt;/h3&gt;

&lt;p&gt;You can optionally add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EXPLAIN plans&lt;/li&gt;
&lt;li&gt;Schema&lt;/li&gt;
&lt;li&gt;Indexes&lt;/li&gt;
&lt;li&gt;Table stats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool will use this additional context to refine its suggestions and increase recommendation confidence.&lt;/p&gt;

&lt;p&gt;The screenshot of this step:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj4n50z8cvln7k8d205l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj4n50z8cvln7k8d205l.png" alt="SQLito Enhanced Analysis" width="800" height="965"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deeper Technical Rationale
&lt;/h3&gt;

&lt;p&gt;The tool supports two levels of analysis:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Standard Analysis (available to all users)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you paste a SQL query and click “Analyze”, the system runs a one-step evaluation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses the query syntax and structure.&lt;/li&gt;
&lt;li&gt;Identifies common inefficiencies.&lt;/li&gt;
&lt;li&gt;Generates a list of suggestions based on known performance patterns and best practices.&lt;/li&gt;
&lt;li&gt;Provides an optimized version of the query.&lt;/li&gt;
&lt;li&gt;Assigns confidence tags based on available context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mode is fast and lightweight, ideal for quick feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Deep Analysis (available to registered users)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deep Analysis follows a multi-stage reasoning process using an internal AI agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Hypothesis Generation&lt;br&gt;
The model builds multiple performance-related hypotheses based on the SQL query and any provided context — including schema, EXPLAIN plans, table/index stats, constraints, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Validation and Filtering&lt;br&gt;
It then self-evaluates each recommendation. Weak or irrelevant suggestions are filtered out. This step prevents common LLM hallucinations or overly generic advice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimized Query Generation&lt;br&gt;
A refined, rewritten query is generated — informed by the validated insights and context.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach improves both precision and reliability of recommendations, especially for complex queries involving joins, CTEs, subqueries, or large tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who is this for?
&lt;/h3&gt;

&lt;p&gt;This tool isn’t trying to replace profilers or DB-specific advisors. It’s designed for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers who want quick feedback on queries&lt;/li&gt;
&lt;li&gt;Teams who want to share and discuss queries&lt;/li&gt;
&lt;li&gt;People learning SQL who want to understand improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Give It a Shot
&lt;/h3&gt;

&lt;p&gt;You can try the tool here: &lt;a href="https://sqli.to" rel="noopener noreferrer"&gt;https://sqli.to&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’d love to hear your thoughts❤️&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>sql</category>
      <category>devops</category>
    </item>
    <item>
      <title>Top 6 MySQL Database Management Struggles for Laravel Developers (And Smart Fixes)</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Tue, 02 Sep 2025 15:00:00 +0000</pubDate>
      <link>https://forem.com/drupaladmin/top-6-mysql-database-management-struggles-for-laravel-developers-and-smart-fixes-37cg</link>
      <guid>https://forem.com/drupaladmin/top-6-mysql-database-management-struggles-for-laravel-developers-and-smart-fixes-37cg</guid>
      <description>&lt;p&gt;You build Laravel apps. You’re good at writing features and shipping updates, but when something goes wrong with MySQL, it can be a very different story. Suddenly, you’re looking at config files, logs, and monitoring tools you didn’t plan to touch. Managing a database isn’t what most Laravel developers signed up for, but it’s still part of the job. Especially when performance drops or a query starts taking way too long.&lt;/p&gt;

&lt;p&gt;In this article, we cover the biggest challenges Laravel devs run into when handling their own database servers — and how to automate your way out of trouble.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Default MySQL Settings Aren’t Good Enough
&lt;/h2&gt;

&lt;p&gt;Most MySQL installs run with default configuration settings. These aren’t tuned for your app or your traffic. Things like small &lt;strong&gt;innodb_buffer_pool_size&lt;/strong&gt;, default &lt;strong&gt;max_connections&lt;/strong&gt;, and sub-optimal cache sizing might work fine at first. But as your app scales or traffic patterns shift, these defaults can start throttling your performance.&lt;/p&gt;

&lt;p&gt;Fixing this manually means reading status metrics, figuring out which variables to change, testing them, and hoping you don’t make things worse. It’s a cycle of tuning that you don’t have the time or expertise to execute efficiently and effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem’s Automation
&lt;/h3&gt;

&lt;p&gt;Releem completely automates the tuning process according to your specific workload requirements. With its agent installed, Releem continuously collects CPU, memory, disk I/O, and workload statistics. The cloud platform then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suggests tuned my.cnf values across &lt;a href="https://releem.com/docs/mysql-performance-parameters" rel="noopener noreferrer"&gt;~30 variables&lt;/a&gt;, including &lt;strong&gt;innodb_buffer_pool_size&lt;/strong&gt;, &lt;strong&gt;max_connections&lt;/strong&gt;, &lt;strong&gt;sort_buffer_size&lt;/strong&gt;, and more.&lt;/li&gt;
&lt;li&gt;Offers one-click application and rollback safety, complete with diff comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In fact, when Releem’s tuning was applied to a Laravel Aimeos e-commerce app, it &lt;a href="https://medium.com/releem/how-mysql-tuning-improves-the-laravel-performance-2dc2af713d2a" rel="noopener noreferrer"&gt;cut response times by 42% and dropped CPU usage by 86%&lt;/a&gt;, even under the same workload. Queries per second jumped from 12 to 35, a dramatic 291% increase. This demonstrates just how much performance can be gained by moving beyond default MySQL settings.&lt;/p&gt;

&lt;p&gt;You too can see these kinds of improvements in minutes with Reelem, instead of spending weeks slogging through manual tweaking.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Queries That Look Fine – Until They Don’t
&lt;/h2&gt;

&lt;p&gt;Laravel’s &lt;a href="https://laravel.com/docs/5.0/eloquent" rel="noopener noreferrer"&gt;Eloquent ORM&lt;/a&gt; makes queries easy to write, but also easy to overlook. A query might run okay in development, but once it’s executed hundreds of times per minute in production, it can become a bottleneck. These issues often go unnoticed until your response times spike.&lt;/p&gt;

&lt;p&gt;Traditionally, diagnosing these problems means enabling slow query logging, sorting through logs, and writing &lt;strong&gt;EXPLAIN&lt;/strong&gt; statements. It's tedious and reactive, not proactive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem Offers Query Analytics AND Recommendations
&lt;/h3&gt;

&lt;p&gt;Releem brings &lt;a href="https://releem.com/query-analytics" rel="noopener noreferrer"&gt;query analytics work directly into your dashboard&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Top 100 queries by execution time and cumulative load&lt;/strong&gt;: You can sort by Avg. execution time to identify slow queries or by Total load time to surface frequently used queries consuming the most resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution counts and load bars&lt;/strong&gt; highlight where time is being spent in aggregate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query inspection pane&lt;/strong&gt; provides detailed information, including the full SQL text and execution status, for each query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“Get Recommendations” button&lt;/strong&gt; generates index suggestions tailored to that query, such as adding a multi-column index that aligns with the filters and ORDER BY clauses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://releem.com/query-analytics" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyy5k9k4b9ukltpugn0v.png" alt=" " width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With premium features enabled, Releem even runs &lt;a href="https://releem.com/blog/introducing-automatic-sql-query-optimization?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;automatic query optimization&lt;/a&gt; weekly, finds inefficient queries among the top 100 and slowest 100, adds them to the Query Optimization tab, and sends an email notification when new optimizations are available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://releem.com/blog/introducing-automatic-sql-query-optimization" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvy1bsod5nuk8lxl6ykfg.png" alt=" " width="668" height="832"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You still decide whether to apply changes, but Releem flags where to look and then monitors the result to confirm performance gains after implementation. That turns slow, reactive triage into a clear, manageable, proactive workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Schema Decisions Catch Up Eventually
&lt;/h2&gt;

&lt;p&gt;At some point, your schema stops keeping up with your data. Maybe a table gets too large, a join slows down, or an index that helped early on is now causing more harm than good. These changes don’t happen overnight, and they’re easy to miss when your focus is on your app's features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem Surfaces Schema Issues
&lt;/h3&gt;

&lt;p&gt;Releem keeps an eye on this too by &lt;a href="https://releem.com/mysql-schema-optimization" rel="noopener noreferrer"&gt;automatically running daily checks on your MySQL schema&lt;/a&gt;. It looks for common structural issues that can impact performance over time, like missing primary keys, redundant or duplicate indexes, outdated storage engines, and inconsistent character sets or collations across tables. These things directly affect query speed, index efficiency, and even data integrity.&lt;/p&gt;

&lt;p&gt;Each issue is surfaced with specific recommendations in the Releem dashboard, so you know exactly what needs to change and why. For example, if an index is duplicated, Releem will suggest removing it. This kind of feedback helps keep your schema clean, scalable, and in line with best practices, without having to manually audit your tables or dig into metadata.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://releem.com/mysql-schema-optimization" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhdnql8kntll593hhwwkd.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. You Don’t Have Time to Build Monitoring
&lt;/h2&gt;

&lt;p&gt;Most Laravel developers don’t set up full monitoring stacks. Tools like Prometheus and Grafana are powerful, but they take time and infrastructure you may not have. And even if you do set them up, you still need to know what to look for.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem Gives You 24/7 Monitoring Without the Overhead
&lt;/h3&gt;

&lt;p&gt;Releem handles monitoring right out of the box. After installation, you get a clear, &lt;a href="https://releem.com/mysql-monitoring" rel="noopener noreferrer"&gt;real-time dashboard of your MySQL server’s health&lt;/a&gt; without wiring anything together or maintaining a stack. It tracks key system metrics like CPU, memory, disk I/O, and swap usage, alongside MySQL-specific metrics like queries per second, slow query logs, buffer pool efficiency, and latency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://releem.com/mysql-monitoring" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5kxmtln3acmdzkijtty.png" alt=" " width="800" height="1013"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of dumping a wall of stats at you, Releem highlights what needs your attention. You can filter by time range to focus on specific events or performance changes, and visually correlate system activity with slowdowns or spikes in load. Important events (like config changes or performance drops) are marked directly on the timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Small Issues Turn Into Big Problems
&lt;/h2&gt;

&lt;p&gt;Sometimes performance doesn’t crash, it slowly degrades over time. In some ways, this can be worse, because it's difficult to identify the specific pieces contributing to the worsening performance. And without proper alerts, your users might notice the problem before you do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem Spots Trouble Before It Impacts Users
&lt;/h3&gt;

&lt;p&gt;Releem handles this quietly but thoroughly with its &lt;a href="https://releem.com/health-checks" rel="noopener noreferrer"&gt;built-in Health Checks&lt;/a&gt;. These checks run twice a day and analyze 19 different MySQL performance metrics grouped into four categories: cache performance, query efficiency, resource usage, and temporary data handling. That includes things like buffer pool hit rates, temp table usage, table lock contention, and CPU utilization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://releem.com/health-checks" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2q4oalbsz5h0pcljspd.png" alt=" " width="800" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result is a real-time health score that reflects how your database is holding up under your actual workload. If something starts to slide, you’ll see it right away in the dashboard. No setup needed and no complex alert rules to write.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Database Security Often Gets Ignored
&lt;/h2&gt;

&lt;p&gt;Developers usually focus their security efforts on the app layer – setting up auth, CSRF, encrypted tokens. But databases have their own set of risks. Things like open network access (where MySQL is accessible from any IP), unused or overly privileged user accounts, outdated database versions with known vulnerabilities, and weak or permissive SQL modes can all create serious security gaps.&lt;/p&gt;

&lt;p&gt;Most devs don’t regularly check their database security settings, and MySQL often ships with insecure defaults, especially in older installations or development environments that get pushed to production. Unlike app-level bugs, database misconfigurations often go unnoticed until something goes wrong. The risks are real, especially when your production database is handling sensitive user data or powering a public-facing e-commerce system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Releem Handles the Security Checks Most Developers Skip
&lt;/h3&gt;

&lt;p&gt;Releem takes care of this by running a &lt;a href="https://releem.com/blog/mysql-security-checks" rel="noopener noreferrer"&gt;full set of automated MySQL security checks&lt;/a&gt;. It scans for 11 key issues that are commonly overlooked but can compromise database security. These checks cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication and access controls&lt;/strong&gt; (anonymous users, blank passwords, remote root access)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQL mode and privilege enforcement&lt;/strong&gt; (&lt;strong&gt;skip-grant-tables,
STRICT_ALL_TABLES&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network exposure&lt;/strong&gt; (unsafe bind addresses)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User account hygiene&lt;/strong&gt; (users with the same name as their password)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration hygiene&lt;/strong&gt; (symbolic link support, leftover test databases)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0m2w5ghps6g1oj906kq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0m2w5ghps6g1oj906kq3.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your database fails one of these checks, you’ll be able to track this on the dashboard and learn how to resolve the problem. With Releem, you don’t need to be a MySQL security expert to stay protected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Releem Offers A Better Way to Manage MySQL with Laravel
&lt;/h2&gt;

&lt;p&gt;Releem helps Laravel developers handle the parts of MySQL that usually get pushed aside, things like performance, monitoring, tuning, and security. It doesn’t take over your database, and it doesn’t require you to change how you work. It just gives you better visibility and smarter suggestions.&lt;/p&gt;

&lt;p&gt;You can use it to spot slow queries, apply configuration changes, track schema health, and keep tabs on your server’s performance. And since you’re already busy with feature development, you don’t need to do much – just install it and let it run.&lt;/p&gt;

&lt;p&gt;You can install Releem in a few minutes and start seeing data the same day. The free trial plan gives you access to all features without any limitations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://releem.com/" rel="noopener noreferrer"&gt;Try Releem for free now&lt;/a&gt; to see how your database is really performing.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>laravel</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>August 2025 At Releem - Recommendations Impact &amp; Redundant Index Detection</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Sun, 31 Aug 2025 21:00:00 +0000</pubDate>
      <link>https://forem.com/drupaladmin/august-2025-at-releem-recommendations-impact-redundant-index-detection-2cp5</link>
      <guid>https://forem.com/drupaladmin/august-2025-at-releem-recommendations-impact-redundant-index-detection-2cp5</guid>
      <description>&lt;p&gt;We’ve been hard at work refining Releem to make your database monitoring and optimization even more intuitive and secure💪&lt;/p&gt;

&lt;p&gt;This month brings a deeper query insights, and smarter health checks, so you get a clear, real-time view of database activity and can respond to problems in record time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Dashboard
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Added EXPLAIN &amp;amp; Example Queries
&lt;/h4&gt;

&lt;p&gt;See exactly why a query is slow with execution plans and real query samples, directly in the dashboard. &lt;a href="https://releem.com/blog/query-examples-and-explain-added" rel="noopener noreferrer"&gt;Learn more&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1651fv6soq6kdyjhn6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi1651fv6soq6kdyjhn6j.png" alt=" " width="666" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Baseline Metrics &amp;amp; Recommendations Impact
&lt;/h4&gt;

&lt;p&gt;We now capture your server’s initial state before configuration tuning. This allows you to compare before/after metrics and see the real impact of Releem’s recommendations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz711v4lw5lc2ngg9y92s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz711v4lw5lc2ngg9y92s.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Improved Weekly Report
&lt;/h4&gt;

&lt;p&gt;Added a Schema Check summary alongside the existing health and performance insights for a complete MySQL/MariaDB status overview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0kyg7jd16heknw0y41v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0kyg7jd16heknw0y41v.png" alt=" " width="800" height="770"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  New Schema Check: Redundant Index Detection
&lt;/h4&gt;

&lt;p&gt;Automatically flags indexes that sat unused for the past 30 days so you can keep things lean. &lt;a href="https://releem.com/blog/mysql-database-schema-checks#rec816410020" rel="noopener noreferrer"&gt;Learn more about redundant indexes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa53qolcq503vcme17ajh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa53qolcq503vcme17ajh.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Platform
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Improved Index Detection
&lt;/h4&gt;

&lt;p&gt;Fixed a bug that caused Releem to miss recommended indexes if they had been created with alternate names. This edge case was leading to incomplete measuring results of query optimization. Detection is now consistent across all index name variations. You’ll see accurate query optimization results every time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Improved Memory Tuning
&lt;/h4&gt;

&lt;p&gt;Recommendations now account for Performance Schema size to prevent under-allocation issues in certain configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updates to Releem Agent
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Streamlined Releem Agent Installation for Linux
&lt;/h3&gt;

&lt;p&gt;We’ve simplified the automatic installation process with clearer steps, fewer prompts, and faster setup, so you can start collecting metrics and tuning in less time. &lt;strong&gt;Note&lt;/strong&gt;: Work is also underway to bring similar installation improvements to Windows and AWS RDS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Contributions
&lt;/h2&gt;

&lt;p&gt;We're always collecting issues and feature requests on &lt;a href="https://github.com/Releem/mysqlconfigurer" rel="noopener noreferrer"&gt;our GitHub&lt;/a&gt;. Here's where you can contribute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Issues&lt;/strong&gt; – If you encounter any problems or bugs, report them &lt;a href="https://github.com/Releem/mysqlconfigurer/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature Requests&lt;/strong&gt; – Have an idea to make Releem even better? Share your suggestions &lt;a href="https://github.com/Releem/mysqlconfigurer/discussions" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  News You Might Have Missed
&lt;/h2&gt;

&lt;p&gt;We're excited to share a great article by Laravel News covering the top 6 MySQL struggles Laravel developers face daily — from poor default configs to performance monitoring gaps. The piece highlights how Releem's automated optimization and health checks solve these exact pain points. Read the full article here: &lt;a href="https://laravel-news.com/top-6-mysql-database-management-struggles" rel="noopener noreferrer"&gt;https://laravel-news.com/top-6-mysql-database-management-struggles&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbye2lz5pyta796zm3t9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbye2lz5pyta796zm3t9.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>devops</category>
      <category>database</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Debug Smarter, Not Harder — Releem Now Shows EXPLAIN Plans and Query Examples for MySQL &amp; MariaDB</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Thu, 07 Aug 2025 18:56:37 +0000</pubDate>
      <link>https://forem.com/drupaladmin/debug-smarter-not-harder-releem-now-shows-explain-plans-and-query-examples-for-mysql-mariadb-3pnn</link>
      <guid>https://forem.com/drupaladmin/debug-smarter-not-harder-releem-now-shows-explain-plans-and-query-examples-for-mysql-mariadb-3pnn</guid>
      <description>&lt;p&gt;We shipped query examples and EXPLAIN plans in Releem's query analytics.&lt;/p&gt;

&lt;p&gt;Releem has always shown SQL digests in analytics - those normalized query patterns that group similar queries together. Useful for spotting trends, but when you see "this query pattern is slow," the first question is always: "what does the actual query look like?"&lt;/p&gt;

&lt;p&gt;Before this update, you'd have to dig through your database logs to find the real query, then manually run EXPLAIN to understand what's happening. That's too much friction for something you need to do constantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built
&lt;/h2&gt;

&lt;p&gt;Now when you open query analytics for each query, you see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SQL digests&lt;/strong&gt; (the normalized patterns)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Query examples&lt;/strong&gt; (actual SQL queries that match the pattern)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EXPLAIN plans&lt;/strong&gt; (MySQL's execution plan)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything in one interface. No context switching, no hunting through logs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sv5lt9u7v51y9smroa3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6sv5lt9u7v51y9smroa3.png" alt=" " width="652" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Releem
&lt;/h2&gt;

&lt;p&gt;This change makes Releem's recommendations much more transparent. When Releem suggests an optimization, you can now see exactly what triggered it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The specific query that caught Releem's attention&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The execution plan that revealed the performance issue&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How this led to the recommendation you received&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can see the full analysis that led to each recommendation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Details
&lt;/h2&gt;

&lt;p&gt;Getting query examples was trickier than expected because of how different database engines handle query history.&lt;/p&gt;

&lt;p&gt;For MySQL, we pull examples from the Performance Schema, which stores recent query executions with their full SQL text. For MariaDB, the Releem agent monitors query history directly since MariaDB's Performance Schema implementation differs.&lt;/p&gt;

&lt;p&gt;Try &lt;a href="https://releem.com" rel="noopener noreferrer"&gt;Releem&lt;/a&gt; for MySQL &amp;amp; MariaDB performance monitoring and optimization.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>database</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Indexes in MySQL: How long do you wait before calling an index "unused"?</title>
      <dc:creator>Roman Agabekov</dc:creator>
      <pubDate>Thu, 31 Jul 2025 18:53:35 +0000</pubDate>
      <link>https://forem.com/drupaladmin/indexes-in-mysql-how-long-do-you-wait-before-calling-an-index-unused-1do8</link>
      <guid>https://forem.com/drupaladmin/indexes-in-mysql-how-long-do-you-wait-before-calling-an-index-unused-1do8</guid>
      <description>&lt;p&gt;For anyone dealing with MySQL/MariaDB performance: unused indexes are silent resource drains. They consume memory, slow down writes, and the optimizer still has to consider them.&lt;/p&gt;

&lt;p&gt;From what I've seen in production, different teams have different periods to classify an index as unused:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some teams check after 30 days of non-use&lt;/li&gt;
&lt;li&gt;Others wait until performance issues surface (risky)&lt;/li&gt;
&lt;li&gt;A few go aggressive with 7-14 day windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wonder, how long do you wait before calling an index "unused"?&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>webdev</category>
      <category>database</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
