Nvidia Launches Free Tool That Links Idle Computers Into a Personal AI Data Center

Nvidia has launched PAIR, a free open-source tool that links compatible computers on a home network so they can pool idle processing power for local AI inference and agentic workloads. "While the compatible devices are mostly Nvidia GeForce GPUs (PAIR works with RTX 20-series cards and newer, as well as RTX Pro GPUs and DGX Spark systems), Apple’s M4 chips or newer will also work," reports The Verge. From the report: The key thing here is that PAIR uses your in-home systems when they’re idle to avoid interfering with other tasks. And this disaggregated system of computers can work in parallel to chew through lots of processing requests — which should be helpful for an agentic workflow that breaks complex tasks into smaller jobs. This should prevent large bottlenecks on a single GPU, and Nvidia says PAIR can adapt as devices join or leave the network — including if a user does something like start playing a game on their desktop PC.
[…] Nvidia says PAIR is secured by pairing all devices through a six digit code and then securing the channel via mTLS (Mutual Transport Layer Security), to create an encrypted communication line that’s trusted in both directions between computers. The Nvidia PAIR beta is available today, with support for Windows, Linux, and macOS.


Read more of this story at Slashdot.

Slashdot

NewDays brings its AI-driven dementia care platform to Nevada, expands seed round to $16M

https://cdn.geekwire.com/wp-content/uploads/2026/09/NewDays-founders1.jpg

NewDays founders Daniel Kelly (left) and Babak Parviz. (NewDays Photo)

NewDays, a Seattle startup using a generative AI therapy to treat people with mild dementia, has raised additional funding and closed its seed round with $16 million. The funding was led by Madrona and General Catalyst.

The company also announced on Wednesday that it has expanded its services to Nevada, joining Washington, California, Florida, Texas and New York. NewDays offers telehealth visits with human clinicians once or twice a month alongside unlimited conversations with an AI companion named Sunny.

“Our goal isn’t to add years — it’s to add quality to the years people have,” said CEO and co-founder Babak Parviz.

The startup is addressing a widespread issue: one in three Americans over 65 experiences cognitive decline, with 11% living with dementia and another 22% with mild cognitive impairment. Patients use Sunny to engage in conversational topics, memory exercises, and language or reasoning games designed to strengthen cognitive function.

While these cognitive strategies are clinically proven, they have historically lacked broad accessibility, Parviz said. NewDays aims to make treatment scalable using AI and demonstrate measurable improvement.

This past July at the annual Alzheimer’s Association International Conference, the company presented research showing that NewDays patients with dementia performed better on cognitive tests than expected historical decline curves — translating to roughly 18 months of preserved cognitive function. The study was limited to 24 patients, half of whom have dementia and the other half experiencing other cognitive impairment.

“Generative AI under the guidance of an expert human clinician is what finally lets us deliver a medically proven intervention at that scale. That’s the whole thesis of the company,” Parviz said via email.

To further validate its platform, NewDays is currently running a randomized controlled trial with Kaiser Permanente in California.

Users can try Sunny for free before opting into a 20-minute clinical assessment to evaluate suitability for the full program. Clinical sessions cost $150 each. NewDays currently accepts traditional Medicare as an out-of-network provider and is working to secure in-network status with commercial insurers and Medicare Advantage plans.

GeekWire

Things You Never Knew About Everyday Products

https://theawesomer.com/photos/2026/09/product_secrets_in_plain_sight_t.jpg

Things You Never Knew About Everyday Products

From microwave popcorn to light bulbs to Kleenex, everyday products are full of interesting backstories and features you probably never heard about. Mike from List 25 explores these hidden design secrets, planned obsolescence, the stories behind how products evolved, and cases where consumer pressure forced companies to change them.

The Awesomer

Designing a Reliable MySQL Backup Strategy with Percona XtraBackup

Introduction

In a production MySQL environment, backups are not just a best practice – they are your recovery plan when something breaks.

Data corruption, accidental deletes, failed deployments, storage crashes – these are not hypothetical risks. They happen. When they do, your ability to recover quickly depends entirely on how well your MySQL backup strategy was designed.

In one of our live production environments, we implemented a Full + Incremental MySQL backup strategy using Percona XtraBackup. The objective was clear:

  • Reduce backup windows
  • Avoid performance impact on the primary server
  • Maintain consistent physical backups
  • Enable reliable point-in-time recovery (PITR)

This article explains the architecture, automation model, restoration workflow, and operational lessons learned while running this MySQL disaster recovery strategy in production.

Why Percona XtraBackup?

Logical backup tools such as mysqldump are useful for small databases. However, as data size increases, logical dumps become slower, consume more resources, and extend recovery times.

Our production environment required:

  • Hot, non-blocking backups
  • Minimal performance impact
  • Faster restore capability
  • Physical consistency of InnoDB tables
  • Flexibility to restore to a specific recovery point

Percona XtraBackup meets these requirements by performing physical backups of InnoDB data files without locking tables for long durations. Since it works at the storage level, restoration is significantly faster compared to logical imports. To understand how transaction consistency and crash recovery function internally, see the InnoDB storage engine documentation.

For high-availability MySQL deployments, physical backups are generally more practical and operationally reliable. For detailed command references and configuration guidance, refer to the Percona XtraBackup documentation.

Backup Architecture Overview

High-Level Design

  • Backup Source: MySQL Replica Server
  • Backup Tool: Percona XtraBackup
  • Backup Model: Full + Incremental
  • Retention Policy: 7 Days
  • Storage Location: Local filesystem on backup server

Backups were executed from a replica instead of the primary database server. This decision reduced production load and ensured that backup activity never interfered with live application traffic.

Using a replica for backups is a simple architectural choice, but it significantly improves operational stability.

Directory Structure and Organization

A clean directory structure prevents confusion during recovery.


/backup/mysql/
├── full/   # Weekly full backups
├── incr/   # Daily incremental backups
└── log/    # Backup execution logs

Each backup is timestamped. This makes it easy to:

  • Identify recovery points
  • Maintain incremental chain order
  • Automate retention cleanup
  • Troubleshoot failures quickly

Consistency in structure reduces recovery time during real incidents.

Backup Schedule and Automation

Manual backups introduce risk. In emergency situations, undocumented manual steps often fail.

We automated the process using scheduled cron jobs during off-peak hours.

Schedule

  • Full Backup: Every Sunday
  • Incremental Backup: Monday to Saturday (or twice daily when required)

This ensured:

  • Full backups were taken during low traffic windows
  • Incremental backups captured daily changes efficiently
  • Storage growth remained controlled
  • Recovery points were always recent

Automation also handled deletion of backups older than seven days, enforcing the retention policy without manual intervention.

Full Backup Workflow

The weekly full backup process performs the following:

  1. Creates a timestamped directory
  2. Executes xtrabackup --backup
  3. Writes execution logs for audit and debugging
  4. Removes backups older than the defined retention period

This keeps storage usage predictable and eliminates cleanup mistakes.

Incremental Backup Workflow

Incremental backups capture only the data changes since the previous backup. This significantly reduces:

  • Backup duration
  • Disk usage
  • Network load (if backups are transferred)

Determining the Base Backup

The script dynamically determines the correct base:

  • If no incremental exists, the latest full backup is used
  • If incremental backups exist, the most recent incremental becomes the base

Maintaining the integrity of this incremental chain is critical. A broken chain means restoration will fail. For that reason, monitoring and validation are part of the daily operational checklist.

Selective Point-in-Time Recovery Strategy

Backups only provide value when restoration is reliable and predictable.

This strategy supports restoring to:

  • The latest backup
  • Any specific incremental backup within the retention window

Restoration Workflow

  1. Stop the MySQL service
  2. Identify the required recovery point
  3. Prepare the full backup using --apply-log-only
  4. Sequentially apply incremental backups in chronological order
  5. Perform the final prepare phase
  6. Replace the MySQL data directory
  7. Correct file ownership and permissions
  8. Start MySQL

This structured approach ensures data consistency and allows precise recovery based on business requirements.

Point-in-time recovery provides operational flexibility, especially when recovering from accidental deletes or application-level errors.

Operational Safety Measures

During restoration, risk management is essential.

To prevent accidental data loss:

  • Existing data directories are renamed before replacement
  • Restores are performed during approved maintenance windows
  • MySQL service control is handled manually in production environments

Automation is powerful, but destructive actions in production should always include controlled human verification.

Monitoring and Troubleshooting

Logging

Each backup execution generates dedicated log files:

  • Full backup logs
  • Incremental backup logs

Daily log verification ensures backup failures are detected early, rather than during a real disaster scenario.

Common Failure Points

  • Missing backup user privileges
  • Insufficient disk space
  • Corrupted incremental chain
  • Incorrect base directory reference

Most issues were eliminated through proactive monitoring and periodic restore validation.

Key Learnings and Best Practices

Running this MySQL backup strategy in production reinforced several principles:

  • Always test restores, not just backups
  • Keep backup logic simple and deterministic
  • Separate full and incremental backups clearly
  • Automate retention enforcement
  • Never rely on production systems for restore testing

The confidence to restore quickly comes from repeated testing, not from assuming backups are valid.

Platform Compatibility

This backup strategy relies on physical file-level access. Therefore, it does not work with managed database platforms that restrict file system access.

It is suitable for:

  • On-premise MySQL servers
  • MySQL hosted on virtual machines (such as EC2 instances) with full OS access

It is not applicable to managed services where data directory access is restricted.

Understanding this limitation is essential before implementation.

Conclusion

A reliable MySQL backup and disaster recovery strategy requires more than installing a tool. It requires clear architecture, automation discipline, regular testing, and operational awareness.

By combining:

  • Percona XtraBackup
  • A Full + Incremental backup model
  • Structured directory management
  • Automated retention policies
  • Regular restore validation

We achieved predictable recovery times, reduced backup overhead, and improved operational confidence during high-pressure incidents.

For organizations managing production MySQL workloads, this approach provides a practical, scalable, and field-tested foundation for long-term data protection.

Planet for the MySQL Community

★ Best Laravel Practices for Every Developer

https://saasykit.com/open-graphy?title=Laravel%20Best%20Practices&url=https%3A%2F%2Fsaasykit.com%2Fblog%2Flaravel-best-practices&signature=af3ee76d2754edcf057e766939a37b02cf43308377862794822959c7bc1a577a&.png

Laravel is a powerful framework designed to simplify building modern web applications. Like any framework, it has best practices embedded in its core. By following these guidelines, you can write cleaner code, minimize technical debt, enhance team collaboration, and ensure your codebase aligns with the "Laravel way" of doing things.

In this article, we’ll explore these essential Laravel best practices, from structuring your code to optimizing database operations, ensuring your projects stay efficient and developer-friendly.

Whether you’re a seasoned Laravel developer or just starting, these practices will help you level up your development skills and deliver high-quality applications.

So let’s dive in. 👇

Fat Models, Skinny Controllers

Shift database logic to Eloquent models to maintain cleaner controllers and reusable code

Bad example:

public function index()
{
    $clients = Client::verified()
        ->with(['orders' => function ($query) {
            $query->where('created_at', '>', now()->subDays(7));
        }])
        ->get();

    return view('index', compact('clients'));
}

Good example:

public function index(Client $client)
{
    return view('index', ['clients' => $client->getVerifiedWithRecentOrders()]);
}

class Client extends Model
{
    public function getVerifiedWithRecentOrders(): Collection
    {
        return $this->verified()
            ->with(['orders' => fn($query) => $query->recent()])
            ->get();
    }

    public function scopeVerified($query)
    {
        return $query->where('is_verified', true);
    }
}

class Order extends Model
{
    public function scopeRecent($query)
    {
        return $query->where('created_at', '>', now()->subDays(7));
    }
}

 

Single Responsibility Principle

A class should have only one responsibility. This means that a class should focus on a single piece of functionality. Violating this principle can make your code harder to read, test, and maintain because it mixes concerns that should be separated.

By adhering to the Single Responsibility Principle, you create code that is easier to understand and refactor. Each class or service has a clear purpose, making the overall system more modular and flexible.

Bad example:

public function update(Request $request): string
{
    $validated = $request->validate([
        'name' => 'required|max:255',
        'tasks' => 'required|array:due_date,status'
    ]);

    foreach ($request->tasks as $task) {
        $formattedDate = $this->carbon->parse($task['due_date'])->toDateTimeString();
        $this->logger->info('Task updated: ' . $formattedDate . ' - ' . $task['status']);
    }

    $this->project->updateTasks($request->validated());

    return redirect()->route('projects.index');
}

Good example:

public function update(UpdateProjectRequest $request): string
{
    $this->taskLogger->logTasks($request->tasks);
    $this->projectService->updateTasks($request->validated());

    return redirect()->route('projects.index');
}

class TaskLogger
{
    public function logTasks(array $tasks): void
    {
        // Logic to log tasks
    }
}

class ProjectService
{
    public function updateTasks(array $data): void
    {
        // Logic to update project tasks
    }
}

Methods Should Do Just One Thing

A function should have a single purpose and execute it well. When a method does more than one thing, it becomes harder to understand, test, and maintain. Splitting responsibilities into smaller, focused methods makes your code more readable and easier to debug.

Bad example:

public function getFullNameAttribute(): string
{
    if (auth()->user() && auth()->user()->hasRole('admin') && auth()->user()->isVerified()) {
        return 'Admin ' . $this->first_name . ' ' . $this->last_name;
    } else {
        return $this->first_name[0] . '. ' . $this->last_name;
    }
}

Good Example:

public function getFullNameAttribute(): string
{
    return $this->isVerifiedAdmin() ? $this->formatFullName() : $this->formatShortName();
}

private function isVerifiedAdmin(): bool
{
    $user = auth()->user();
    return $user && $user->hasRole('admin') && $user->isVerified();
}

private function formatFullName(): string
{
    return 'Admin ' . $this->first_name . ' ' . $this->last_name;
}

private function formatShortName(): string
{
    return strtoupper($this->first_name[0]) . '. ' . ucfirst($this->last_name);
}

Keep Business Logic in Service Classes

Controllers should only handle HTTP requests and responses, delegating complex logic to service classes. This keeps code clean, reusable, and easier to test.

Bad example:

public function store(Request $request)
{
    if ($request->hasFile('image')) {
        $image = $request->file('image');
        $image->storeAs('temp', $image->getClientOriginalName(), 'public');
    }
    
    // Other unrelated logic...
}

Good example:

public function store(Request $request, ArticleService $articleService)
{
    $articleService->uploadImage($request->file('image'));

    // Other unrelated logic...
}

class ArticleService
{
    public function uploadImage(?UploadedFile $image): void
    {
        if ($image) {
            $image->storeAs('uploads/temp', uniqid() . '_' . $image->getClientOriginalName(), 'public');
        }
    }
}

 

Avoid Business Logic in Routes

Routes should only handle HTTP requests, not business logic. This keeps your code clean and maintainable.

Bad example

// Business logic in the route
Route::post('/article', function (Request $request) {
    $article = new Article;
    $article->title = $request->title;
    $article->content = $request->content;
    $article->save();
});

Good example

// Route delegates logic to the controller
Route::post('/article', [ArticleController::class, 'store']);

// In ArticleController
public function store(Request $request)
{
    // logic to create article
}

Use Relationships for Cleaner Code

Use Eloquent relationships to simplify and clarify how related models interact. This avoids repetitive assignments and makes the code easier to maintain and less error-prone.

Bad example

$article = new Article;
$article->title = $request->input('title');
$article->content = $request->input('content');
$article->verified = $request->boolean('verified');
$article->category_id = $category->id;
$article->save();

Good example

$category->articles()->create($request->safe()->only(['title', 'content', 'verified']));

 

Use Database Transactions for Atomic Business Operations

Transactions ensure all database operations succeed or fail as a group, maintaining data integrity.

Bad example

public function placeOrder(Request $request)
{
    $order = new Order;
    $order->user_id = $request->user_id;
    $order->save();

    $payment = new Payment;
    $payment->order_id = $order->id;
    $payment->save();
}

Good example

use DB;

public function placeOrder(Request $request)
{
    DB::beginTransaction();

    try {
        $order = Order::create($request->validated());
        $payment = Payment::create(['order_id' => $order->id]);

        DB::commit();
    } catch (\Exception $e) {
        DB::rollBack();
        throw $e;
    }
}

Avoid Queries in Blade: Use Eager Loading

Executing queries inside Blade templates leads to inefficient database calls, especially with loops. Eager loading fetches related data in a single query, improving performance and avoiding the N + 1 query problem.

Bad example

@foreach (User::all() as $user)
    
@endforeach

If you have 100 users, this triggers 101 queries: one for the users and one for each user’s profile.

Good example

// in a service class or model passed back to controller which shares that with the blade file
$users = User::with('profile')->get();

// in blade file
@foreach ($users as $user)
    
@endforeach

This triggers only 2 queries: one for users and one for their profiles.

Chunk Data for Performance

For tasks that involve large datasets, processing in chunks reduces memory usage and improves performance by limiting the amount of data held in memory at once.

Bad example

$users = User::all();

foreach ($users as $user) {
    // Process each user
}

Good example

User::chunk(500, function ($users) {
    foreach ($users as $user) {
        // Process each user
    }
});

Use Constants Instead of Hardcoded Values

Using constants will help you locate the places where this value is used in case you wanted to change it, refactor and will help you with debugging. 

Bad example

public function isAdmin(User $user): bool
{
    return $user->type === 'admin';
}

Good example

public function isAdmin(User $user)
{
    return $user->type === UserType::ADMIN;
}

Translate Strings

You’ll thank yourself in the future as your app grows if you considered translating strings from the start. All you need it to pass strings through the __() function 

Bad example

return back()->with('message', 'Your article has been added!');

Good example

return back()->with('message', __('Your article has been added!'));  // notice the call to __()

Inject Dependencies

Creating instances with new tightly couples your classes and makes them harder to test or modify. Using the IoC container allows for easier dependency injection and better testability.

Bad example

public function store(Request $request)
{
    $user = new User;
    $user->create($request->validated());
}

Good example

public function __construct(protected UserService $userService) {}

public function store(Request $request)
{
    $this->userService->create($request->validated());
}

Avoid Directly Using .env in Code

Accessing data directly from the .env file throughout your application can make your code harder to maintain and test. Instead, store values in configuration files and retrieve them using config().

Bad example

$apiKey = env('API_KEY');

Good example

// config/services.php
'api_key' => env('API_KEY'),

// Retrieve the value
$apiKey = config('services.api_key');

Store Dates as Objects, Not Strings

Storing dates as strings can lead to inconsistent formats and parsing errors. It’s better to store them as Carbon instances, which provide robust date handling. Use accessors and mutators to format dates only when needed in the display layer.

Bad example



Good example

// In Model
protected $casts = [
    'ordered_at' => 'datetime',
];

// In Blade View


Keep Code Documentation Minimal and Meaningful

Excessive documentation often clutters the code and makes it harder to maintain. Instead, rely on clear, descriptive names for variables, functions, and classes. Use comments only when absolutely necessary to explain complex logic.

Bad example

/**
 * The function checks if the given string has any white spaces
 *
 * @param string $string String received from frontend which might contain
 *                       space characters. Returns True if the string
 *                       is valid.
 *
 * @return bool
 *
 * @license GPL
 */

public function checkString($string)
{
}

Good example

public function hasWhiteSpaces(string $string): bool
{
}

 

Align on Coding Standards with Your Team

Consistent code improves readability and maintainability, making collaboration easier.

Use can Laravel Pint to automatically format and enforce coding standards. It integrates with your development workflow, so you can run it before each commit using Git Hooks.

composer require --dev laravel/pint
vendor/bin/pint

Test, Test and Test

And finally, one of the most important things you can do to ensure the reliability, maintainability, and scalability of your code is to write automated tests.

You don’t need 100% coverage of your functionality (I’d argue that’s counter productive), but at least you need to make sure that all you GET routes are covered, and the more you can add on top, the better. 

Here’s why:

  1. Catch Bugs Early: Tests help identify issues before they make it to production. Catching bugs during development is far cheaper and easier than fixing them post-deployment.

  2. Code Confidence: With proper test coverage, you can make changes to the codebase with confidence. Tests ensure that new changes don’t break existing functionality.

  3. Documentation: Well-written tests act as living documentation for your code. They describe how the system is expected to behave and can be used to understand the code’s intent.

  4. Refactoring Made Safe: When refactoring or improving existing code, tests provide a safety net that ensures no functionality is lost during changes.

  5. Improved Design: Writing tests often encourages better software design. To write testable code, you typically end up with smaller, more focused methods and classes that are easier to maintain.

  6. Collaboration: Tests make it easier for teams to work together on large codebases. They define clear expectations for behavior, reducing misunderstandings and improving collaboration.

  7. Continuous Integration: Tests are essential for implementing continuous integration and delivery workflows. Automated tests can run on every code push, ensuring that only stable code is deployed.

  8. Long-Term Maintenance: In large projects, tests help maintain stability over time, especially when the team changes. New developers can rely on tests to understand the behavior of the codebase and ensure future changes don’t break functionality.

Keep pushing, keep building! 🤘

Laravel News Links

Apple’s Kentucky iPhone glass plant will add 200 permanent jobs

https://media.appleinsider.com/gallery/68761-144869-iPhone-17-Pro-Max-display-3-xl.jpg

A Kentucky-based glass plant is poised to become a much bigger piece of the iPhone supply chain, with hundreds of both long-term and temporary jobs expected as production ramps up.

Apple has been getting glass for iPhone for 20 years from Kentucky. Specifically, in Harrodsburg, Kentucky, where the tech giant plans to expand manufacture the glass for every iPhone and Apple Watch.

Apple COO Sabih Khan and U.S. Secretary of Commerce Howard Lutnick toured Corning Inc. on Friday. The tour comes one year after Apple had invested $2.5 billion more in Kentucky, hoping to double plant jobs and triple its current output.

"Made in Kentucky. Made in America. Sold around the world," U.S. Rep Andy Barr said during the tour, according to The Lexington Herald-Leader. "We invent it here. We have the talent, and we have the manufacturing heritage. We will build it here, and we will sell it to the world."

"I want Kentucky to be the first place companies think about when deciding to make their next major American investment."

The plant currently has 350 employees, but hopes to employ 200 new hourly production jobs, alongside a handful of salaried employees in glass development. That’s not quite double the existing 350, but that’s because Corning was including construction jobs in that total.

However, Apple and Corning are planning to build a new Apple-Corning Innovation Center at the site. It is believed that construction will create 100 jobs, but those won’t last.

"At Apple, we share the administration’s commitment to producing more of the most innovative technology right here in the United States," said Khan.

"We’re expanding our U.S. supply chain, and we will continue to build on these efforts because at Apple, we believe in the power of American innovation. We believe in the ingenuity of American workers, and we believe deeply in the promise of America."

The Apple-Corning Innovation Center may be similar to Apple’s Advanced Manufacturing Center in Houston, though likely at a smaller scale.

AppleInsider News

DBeaver as a MySQL Workbench Replacement : Performance Queries

— -MySQL Workbench Performance Reports

— –From Performance / Performance Reports

— –(Administration Tab → Performance Section → Performance Reports)

— ================================================================================

— MEMORY

— ================================================================================

— Buffer pool

SHOW STATUS LIKE ‘Innodb_buffer_pool_bytes%’;

— Top memory by event

select * from sys.`x$memory_global_by_current_bytes`;

— Top memory by user

SELECT * FROM sys.`x$memory_by_user_by_current_bytes`;

— Top memory by host

select * from sys.`x$memory_by_host_by_current_bytes`;

— Top memory by thread

select * from sys.`x$memory_by_thread_by_current_bytes`;

— ================================================================================

— HOT SPOTS FOR I/O

— ================================================================================

— Top file I/O activity report

select * from sys.`x$io_global_by_file_by_bytes`;

— Top I/O file by time

select * from sys.`x$io_global_by_file_by_latency`;

— Top I/O by event category

select * from sys.`x$io_global_by_wait_by_bytes`;

— Top I/O in time by event category

select * from sys.`x$io_global_by_wait_by_latency`;

— Top I/O time by user thread

select * from sys.`x$io_by_thread_by_latency`;

— ================================================================================

— HIGH-COST SQL STATEMENTS

— ================================================================================

— Statement Analysis

select * from sys.`x$statement_analysis`;

— Statements in highest 5 percent by runtime

select * from sys.`x$statements_with_runtimes_in_95th_percentile`;

— Using temp tables

select * from sys.`statements_with_temp_tables`;

— With sorting

select * from sys.`statements_with_sorting`;

— Full table scans

select * from sys.`statements_with_full_table_scans`;

— Errors or Warnings

select * from sys.`statements_with_errors_or_warnings`;

— ================================================================================

— DATABASE SCHEMA STATISTICS

— ================================================================================

— Schema Object Overview (High Overhead)

select * from sys.`schema_object_overview`;

— Schema index statistics

select * from sys.`x$schema_index_statistics`;

— Schema table statistics

select * from sys.`x$schema_table_statistics`;

— Schema table statistics (with InnoDB Buffer)

select * from sys.`x$schema_table_statistics_with_buffer`;

— Tables with full table scans

select * from sys.`schema_tables_with_full_table_scans`;

— Unused indexes

select * from sys.`schema_unused_indexes`;

— ================================================================================

— WAIT EVENT TIMES EXPERT

— ================================================================================

— Global waits by time

select * from sys.`x$waits_global_by_latency`;

— Waits by user by time

select * from sys.`x$waits_by_user_by_latency`;

— Wait Classes by time

select * from sys.`x$wait_classes_global_by_latency`;

— Wait Classes by Average Time

select * from sys.`x$wait_classes_global_by_avg_latency`;

— ================================================================================

— INNODB STATISTICS

— ================================================================================

— InnoDB Buffer Stats by schema

select * from sys.`x$innodb_buffer_stats_by_schema`;

— InnoDB Buffer Stats by table

select * from sys.`x$innodb_buffer_stats_by_table`;

— =============================================================================

— USER RESOURCE USE

— ================================================================================

— Overview

select * from sys.`x$user_summary`;

— I/O Statistics

select * from sys.`x$user_summary_by_file_io_type`;

SELECT * FROM sys.`x$user_summary_by_statement_type`;

— ============================ END ============================================

Planet for the MySQL Community

Building Implosions from Above

https://theawesomer.com/photos/2026/08/implosions_from_above_t.jpg

Building Implosions from Above

It can be fascinating to watch old structures get torn down with explosives. But most footage of controlled building demolitions is shot from the side. Nelson Aerials shared this eye-opening 3-minute video compilation of 11 implosions captured from a different perspective by flying a photography drone directly overhead.

The Awesomer