100% found this document useful (3 votes)
89 views

Efficient MySQL Performance (Final Release) 1st Edition Daniel Nichter download pdf

Efficient

Uploaded by

tarkwamojzes94
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
89 views

Efficient MySQL Performance (Final Release) 1st Edition Daniel Nichter download pdf

Efficient

Uploaded by

tarkwamojzes94
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download Full Version ebook - Visit ebookmeta.

com

Efficient MySQL Performance (Final Release) 1st


Edition Daniel Nichter

https://ebookmeta.com/product/efficient-mysql-performance-
final-release-1st-edition-daniel-nichter/

OR CLICK HERE

DOWLOAD NOW

Discover More Ebook - Explore Now at ebookmeta.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

Efficient MySQL Performance: Best Practices and Techniques


1st Edition Daniel Nichter

https://ebookmeta.com/product/efficient-mysql-performance-best-
practices-and-techniques-1st-edition-daniel-nichter/

ebookmeta.com

High Performance MySQL 4th Edition 3rd Early Release


Silvia Botros Jeremy Tinley

https://ebookmeta.com/product/high-performance-mysql-4th-edition-3rd-
early-release-silvia-botros-jeremy-tinley/

ebookmeta.com

Efficient Go: Data Driven Performance Optimization (Fourth


Early Release) Bartlomiej Plotka

https://ebookmeta.com/product/efficient-go-data-driven-performance-
optimization-fourth-early-release-bartlomiej-plotka/

ebookmeta.com

A Threat Revealed 1st Edition T S Beier

https://ebookmeta.com/product/a-threat-revealed-1st-edition-t-s-beier/

ebookmeta.com
Your Career in Animation How to Survive and Thrive Second
Edition David B. Levy

https://ebookmeta.com/product/your-career-in-animation-how-to-survive-
and-thrive-second-edition-david-b-levy/

ebookmeta.com

Book Three 1st Edition Maxx Whittaker

https://ebookmeta.com/product/book-three-1st-edition-maxx-whittaker/

ebookmeta.com

Adventures with Time Lines 3rd Edition L Michael Hall

https://ebookmeta.com/product/adventures-with-time-lines-3rd-edition-
l-michael-hall/

ebookmeta.com

Dungeon Diving 101 1st Edition Bruce Sentar

https://ebookmeta.com/product/dungeon-diving-101-1st-edition-bruce-
sentar/

ebookmeta.com

Engaging Higher Education Purpose Platforms and Programs


for Community Engagement 1st Edition Marshall Welch

https://ebookmeta.com/product/engaging-higher-education-purpose-
platforms-and-programs-for-community-engagement-1st-edition-marshall-
welch/
ebookmeta.com
15 THINGS PEOPLE WITH HIGH SELF ESTEEM DON T DO Take Back
Your Personality Face Change and Your Fears And Get Your
Brain Used For Happiness Anthony Papakia
https://ebookmeta.com/product/15-things-people-with-high-self-esteem-
don-t-do-take-back-your-personality-face-change-and-your-fears-and-
get-your-brain-used-for-happiness-anthony-papakia/
ebookmeta.com
Efficient MySQL Performance
Best Practices and Techniques

Daniel Nichter
Efficient MySQL Performance
by Daniel Nichter
Copyright © 2022 Daniel Nichter. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales
promotional use. Online editions are also available for most titles
(http://oreilly.com). For more information, contact our
corporate/institutional sales department: 800-998-9938 or
[email protected].

Acquisitions Editor: Andy Kwan

Development Editor: Corbin Collins

Production Editor: Katherine Tozer

Copyeditor: Justin Billing

Proofreader: Piper Editorial Consulting, LLC

Indexer: Amnet Systems LLC

Interior Designer: David Futato

Cover Designer: Karen Montgomery

Illustrator: Kate Dullea

December 2021: First Edition

Revision History for the First Edition


2021-11-30: First Release
See http://oreilly.com/catalog/errata.csp?isbn=9781098105099 for release
details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc.
Efficient MySQL Performance, the cover image, and related trade dress are
trademarks of O’Reilly Media, Inc.
The views expressed in this work are those of the author, and do not
represent the publisher’s views. While the publisher and the author have
used good faith efforts to ensure that the information and instructions
contained in this work are accurate, the publisher and the author disclaim all
responsibility for errors or omissions, including without limitation
responsibility for damages resulting from the use of or reliance on this
work. Use of the information and instructions contained in this work is at
your own risk. If any code samples or other technology this work contains
or describes is subject to open source licenses or the intellectual property
rights of others, it is your responsibility to ensure that your use thereof
complies with such licenses and/or rights.
978-1-098-10509-9
[LSI]
Preface

A gap in MySQL literature exists between basic MySQL knowledge and


advanced MySQL performance. There are several books about the former,
and one book about the latter: High Performance MySQL, 4th Edition, by
Silvia Botros and Jeremy Tinley (O’Reilly). This is the first book to bridge
the gap.
The gap exists because MySQL is complex, and it’s difficult to teach
performance without addressing that complexity—the proverbial elephant
in the room. But engineers using (not managing) MySQL should not need
to become MySQL experts to achieve remarkable MySQL performance. To
bridge the gap, this book is unapologetically efficient—pay no attention to
the elephant; it’s friendly.
Efficient MySQL performance means focus: learning and applying only the
best practices and techniques that directly affect remarkable MySQL
performance. Focus dramatically narrows the scope of MySQL complexity
and allows me to show you a much simpler and faster path through the vast
and complex field of MySQL performance. The journey begins with the
first sentence of Chapter 1, “Performance is query response time.” From
there, we move fast through indexes, data, access patterns, and a lot more.
On a scale of one to five—where one is an introduction for anyone, and five
is a deep dive for aspiring experts—this book ranges from three to four:
deep, but far from the bottom. I presume that you’re an experienced
engineer who has basic knowledge of and experience with a relational
database (MySQL or otherwise), so I do not explain SQL or database
fundamentals. I presume that you’re an accomplished programmer who is
responsible for one or more applications that use MySQL, so I continually
reference the application and trust that you know the details of your
application. I also presume that you’re familiar with computers in general,
so I talk freely about hardware, software, networks, and so forth.
Since this book focuses on MySQL performance for engineers using
MySQL, not managing it, a few references to MySQL configuration are
made when necessary but not explained. For help configuring MySQL, ask
a DBA where you work. If you don’t have a DBA, hire a MySQL
consultant—there are many great consultants with affordable contract
options. You can also learn by reading the MySQL Reference Manual. The
MySQL manual is superb and experts use it all the time, so you’re in good
company.

Conventions Used in This Book


The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file
extensions.

Constant width
Used for program listings, as well as within paragraphs to refer to
program elements such as variable or function names, databases, data
types, environment variables, statements, and keywords.

Constant width bold


Shows commands or other text that should be typed literally by the user.

Constant width italic


Shows text that should be replaced with user-supplied values or by
values determined by context.

TIP
This element signifies a tip or suggestion.
NOTE
This element signifies a general note.

WARNING
This element indicates a warning or caution.

Using Code Examples


Supplemental material (code examples, exercises, etc.) is available for
download at https://github.com/efficient-mysql-performance.
If you have a technical question or a problem using the code examples,
please email [email protected].
This book is here to help you get your job done. In general, if example code
is offered with this book, you may use it in your programs and
documentation. You do not need to contact us for permission unless you’re
reproducing a significant portion of the code. For example, writing a
program that uses several chunks of code from this book does not require
permission. Selling or distributing examples from O’Reilly books does
require permission. Answering a question by citing this book and quoting
example code does not require permission. Incorporating a significant
amount of example code from this book into your product’s documentation
does require permission.
We appreciate, but generally do not require, attribution. An attribution
usually includes the title, author, publisher, and ISBN. For example:
“Efficient MySQL Performance by Daniel Nichter (O’Reilly). Copyright
2022 Daniel Nichter, 978-1-098-10509-9.”
If you feel your use of code examples falls outside fair use or the
permission given above, feel free to contact us at [email protected].
O’Reilly Online Learning

NOTE
For more than 40 years, O’Reilly Media has provided technology and business training,
knowledge, and insight to help companies succeed.

Our unique network of experts and innovators share their knowledge and
expertise through books, articles, and our online learning platform.
O’Reilly’s online learning platform gives you on-demand access to live
training courses, in-depth learning paths, interactive coding environments,
and a vast collection of text and video from O’Reilly and 200+ other
publishers. For more information, visit http://oreilly.com.

How to Contact Us
Please address comments and questions concerning this book to the
publisher:

O’Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

800-998-9938 (in the United States or Canada)

707-829-0515 (international or local)

707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any
additional information. You can access this page at https://oreil.ly/efficient-
mysql-performance.
Email [email protected] to comment or ask technical questions
about this book.
For news and information about our books and courses, visit
http://oreilly.com.
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://youtube.com/oreillymedia

Acknowledgments
Thank you to the MySQL experts who reviewed this book: Vadim
Tkachenko, Frédéric Descamps, and Fernando Ipar. Thank you to the
MySQL experts who reviewed parts of this book: Marcos Albe, Jean-
François Gagné and Kenny Gryp. Thank you to many other MySQL experts
who have helped me, taught me, and provided opportunities over the years:
Peter Zaitsev, Baron Schwartz, Ryan Lowe, Bill Karwin, Emily Slocombe,
Morgan Tocker, Shlomi Noach, Jeremy Cole, Laurynas Biveinis, Mark
Callaghan, Domas Mituzas, Ronald Bradford, Yves Trudeau, Sveta
Smirnova, Alexey Kopytov, Jay Pipes, Stewart Smith, Aleksandr
Kuzminsky, Alexander Rubin, Roman Vynar, and—again—Vadim
Tkachenko.
Thank you to O’Reilly and my editors: Corbin Collins, Katherine Tozer,
Andy Kwan, and all the people behind the scenes.
And thank you to my wife, Moon, who supported me during the time-
consuming process of writing this book.
Chapter 1. Query Response
Time

Performance is query response time.


This book explores that idea from various angles with a single intent: to
help you achieve remarkable MySQL performance. Efficient MySQL
performance means focusing on the best practices and techniques that
directly affect MySQL performance—no superfluous details or deep
internals required by DBAs and experts. I presume that you’re a busy
professional who is using MySQL, not managing it, and that you need the
most results for the least effort. That’s not laziness, that’s efficiency. To that
end, this book is direct and to the point. And by the end, you will be able to
achieve remarkable MySQL performance.
MySQL performance is a complex and multifaceted subject, but you do not
need to become an expert to achieve remarkable performance. I narrow the
scope of MySQL complexity by focusing on the essentials. MySQL
performance begins with query response time.
Query response time is how long it takes MySQL to execute a query.
Synonymous terms are: response time, query time, execution time, and
(inaccurately) query latency.1 Timing starts when MySQL receives the
query and ends when it has sent the result set to the client. Query response
time comprises many stages (steps during query execution) and waits (lock
waits, I/O waits, and so on), but a complete and detailed breakdown is
neither possible nor necessary. As with many systems, basic
troubleshooting and analysis reveal the majority of problems.
NOTE
Performance increases as query response time decreases. Improving query response time
is synonymous with reducing query response time.

This chapter is the foundation. It expounds query response time so that, in


subsequent chapters, you can learn how to improve it. There are seven
major sections. The first is a true story to motivate and amuse. The second
discusses why query response time is the North Star of MySQL
performance. The third outlines how query metrics are transformed into
meaningful reports: query reporting. The fourth addresses query analysis:
using query metrics and other information to understand query execution.
The fifth maps out the journey of improving query response time: query
optimization. The sixth gives an honest and modest schedule for optimizing
queries. The seventh discusses why MySQL cannot simply go faster—why
query optimization is necessary.

A True Story of False Performance


In 2004, I was working the night shift at a data center—2 p.m. to midnight.
It was a great job for two reasons. First, the only employees in the data
center after 5 p.m. were a handful of engineers monitoring and managing
thousands of physical servers for an undisclosed number of customers and
websites—probably tens of thousands of websites. It was an engineer’s
dream. Second, there were countless MySQL servers that always had
problems to fix. It was a gold mine of learning and opportunity. But at the
time, there were few books, blogs, or tools about MySQL. (Though that
same year, O’Reilly published the first edition of High Performance
MySQL.) Consequently, the state of the art for “fixing” MySQL
performance problems was “sell the customer more RAM.” For sales and
management it always worked, but for MySQL the results were
inconsistent.
One night I decided not to sell the customer more RAM and, instead, to do
a technical deep dive to find and fix the true root cause of their MySQL
performance problem. Their database was powering a bulletin board which
had slowed to a crawl under the weight of its success—still a common
problem today, almost 20 years later. To make a long story short, I found a
single query missing a critical index. After properly indexing the query,
performance improved dramatically and the website was saved. It cost the
customer zero dollars.
Not all performance problems and solutions are that straightforward and
glamorous. But just shy of 20 years’ experience with MySQL has taught me
(and many others) that MySQL performance problems are very often solved
by the best practices and techniques in this book.

North Star
I’m a MySQL DBA and a software engineer, so I know what it’s like
working with MySQL as the latter. Especially when it comes to
performance, we (software engineers) just want it (MySQL) to work.
Between shipping features and putting out fires, who has time for MySQL
performance? And when MySQL performance is poor—or worse: when it
suddenly becomes poor—the way forward can be difficult to see because
there are many considerations: where do we begin? Do we need more
RAM? Faster CPUs? More storage IOPS? Is the problem a recent code
change? (Fact: code changes deployed in the past can cause performance
problems in the future, sometimes days in the future.) Is the problem a
noisy neighbor? Are the DBAs doing something to the database? Has the
app has gone viral and it’s the good kind of problem to have?
As an engineer whose expertise is the application, not MySQL, that
situation can be overwhelming. To move forward confidently, start by
looking at query response time because it is meaningful and actionable.
These are powerful qualities that lead to real solutions:
Meaningful
Query response time is the only metric anyone truly cares about
because, let’s be honest, when the database is fast, nobody looks at it or
asks questions. Why? Because query response time is the only metric
we experience. When a query takes 7.5 seconds to execute, we
experience 7.5 seconds of impatience. That same query might examine
a million rows, but we don’t experience a million rows examined. Our
time is precious.

Actionable
There’s so much you can do to improve query response time and make
everyone happy again that you’re holding a book about it. (Do people
still hold books in the future? I hope so.) Query response time is directly
actionable because you own the code, so you can change the queries.
Even if you don’t own the code (or have access to it), you can still
indirectly optimize query response time. “Improving Query Response
Time” addresses direct and indirect query optimization.

Focus on improving query response time—the North Star of MySQL


performance. Do not begin by throwing hardware at the problem. Begin by
using query metrics to determine what MySQL is doing, then analyze and
optimize slow queries to reduce response time, and repeat. Performance will
improve.

Query Reporting
Query metrics provide invaluable insights into query execution: response
time, lock time, rows examined, and so on. But query metrics, like all
metrics, are raw values that need to be collected, aggregated, and reported
in a way that’s meaningful to (and readable for) engineers. That’s what this
section outlines: how query metric tools transform query metrics into query
reports. But query reporting is only a means to an end, as discussed in
“Query Analysis”.
Looking ahead, query analysis is the real work: analyzing query metrics (as
reported) and other information with the goal of understanding query
execution. To improve MySQL performance, you must optimize queries. To
optimize queries, you must understand how they execute. And to
understand that, you must analyze them with pertinent information,
including query reports and metadata.
But first you need to understand query reporting, since it represents the
trove of query metrics that provide invaluable insights into query execution.
The next three sections teach you about the following:
Sources: query metrics originate from two sources and vary by
MySQL distribution and version
Aggregation: query metric values are grouped and aggregated by
normalized SQL statements
Reporting: query reports are organized by a high-level profile and a
query-specific report

Then you’re ready for “Query Analysis”.

NOTE
This is not a book about database administration, so this section does not discuss the
setup and configuration of query metrics in MySQL. I presume this is already done or
will be done. If not, don’t worry: ask your DBA, hire a consultant, or learn how by
reading the MySQL manual.

Sources
Query metrics originate from the slow query log or the Performance
Schema. As the names indicate, the former is a log file on disk, and the
latter is a database with the same name: performance_schema.
Although completely different in nature (log file on disk as opposed to
tables in a database), both provide query metrics. The important difference
is how many metrics they provide: apart from query response time, which
both provide, the number of metrics ranges from 3 to more than 20.

NOTE
The name slow query log is historical. Long ago, MySQL logged only queries that took
greater than N seconds to execute, and the minimum value for N was 1. Old versions of
MySQL would not log a query that took 900 milliseconds to execute because that was
“fast.” The slow query log really earned its name. Today, the minimum value is zero
with a resolution of microseconds. When set to zero, MySQL logs every query
executed. Therefore, the name is a little misleading, but now you know why.

All things considered, the Performance Schema is the best source of query
metrics because it exists in every current version and distribution of
MySQL, it works locally and in the cloud, it provides all nine metrics
covered in “Query Metrics”, and it’s the most consistent. Plus, the
Performance Schema contains a wealth of other data for deep MySQL
analysis, so its usefulness extends far beyond query metrics. The slow query
log is a good source, too, but it varies considerably:
MySQL
As of MySQL 8.0.14, enable system variable log_slow_extra and
the slow query log provides six of the nine metrics in “Query Metrics”,
lacking only Rows_affected, Select_scan, and
Select_full_join. It’s still a good source, but use the
Performance Schema if possible.
Before MySQL 8.0.14, which includes MySQL 5.7, the slow query log
is bare bones, providing only Query_time, Lock_time,
Rows_sent, and Rows_examined. You can still analyze queries
with only these four metrics, but the analysis is much less insightful.
Consequently, avoid the slow query log before MySQL 8.0.14 and
instead use the Performance Schema.

Percona Server
Percona Server provides a significantly greater number of metrics in the
slow query log when system variable log_slow_verbosity is
configured: all nine metrics covered in “Query Metrics” and more. It
also supports query sampling (logging a percentage of queries) when
system variable log_slow_rate_limit is configured, which is
helpful for busy servers. These features make the Percona Server slow
query log a great source. See “Slow Query Log” in the Percona Server
manual for details.

MariaDB Server
MariaDB Server 10.x uses the Percona Server slow query log
enhancements, but there are two notable differences: system variable
log_slow_verbosity is configured differently in MariaDB, and it
does not provide metric Rows_affected. Otherwise, it’s essentially
the same and a great source, too. See “Slow Query Log Extended
Statistics” in the MariaDB knowledge base for details.

The slow query log is disabled by default, but you can enable it
dynamically (without restarting MySQL). The Performance Schema should
be enabled by default, though some cloud providers disable it by default.
Unlike the slow query log, the Performance Schema cannot be enabled
dynamically—you must restart MySQL to enable it.
Make sure the best query metric source is used and properly configured.
Ask your DBA, hire a consultant, or learn how by reading the MySQL
manual.

WARNING
The slow query log can log all queries when long_query_time is set to zero, but be
careful: on a busy server, this can increase disk I/O and use a significant amount of disk
space.

Aggregation
Query metrics are grouped and aggregated by query. That sounds obvious
since they’re called query metrics, but some query metric tools can group
by username, hostname, database, and so on. These alternate groupings are
exceptionally rare and yield a different type of query analysis, so I don’t
address them in this book. Since query response time is the North Star of
MySQL performance, grouping query metrics by query is the best way to
see which queries have the slowest response time, which forms the basis of
query reporting and analysis.
There’s one little problem: how do you uniquely identify queries to
determine the groups to which they belong? For example, system metrics
(CPU, memory, storage, and so on) are grouped by hostname because
hostnames are unique and meaningful. But queries don’t have any uniquely
identifying properties like hostname. The solution: a SHA-256 hash of the
normalized SQL statement. Example 1-1 shows how a SQL statement is
normalized.
Example 1-1. SQL statement normalization
SELECT col FROM tbl WHERE id=1

SELECT `col` FROM `tbl` WHERE `id` = ?

f49d50dfab1c364e622d1e1ff54bb12df436be5d44c464a4e25a1ebb80fc2f13

SQL statement (sample)

Digest text (normalized SQL statement)

Digest hash (SHA-256 of digest text)

MySQL normalizes SQL statements to digest texts, then computes the


SHA-256 hash of the digest text to yield the digest hash. (It’s not necessary
to understand the full process of normalization; it’s sufficient to know that
normalization replaces all values with ? and collapses multiple whitespaces
to a single space.) Since the digest text is unique, the digest hash is also
unique (hash collisions notwithstanding).
NOTE
The MySQL manual uses the term digest equivocally to mean either digest text or digest
hash. Since the digest hash is computed from the digest text, the equivocation is only a
language ambiguity, not a technical error. Please allow me to equivocate, too, and use
digest to mean either digest text or digest hash when the technical difference doesn’t
matter.

There is an important shift in terminology in the context of query metrics:


the term query changes to be synonymous with digest text. The shift in
terminology aligns with the shift in focus: grouping metrics by query. To
group by query, query must be unique, which is only true of digests.
SQL statements are also called query samples (or samples for short), and
they may or may not be reported. For security, most query metric tools
discard samples by default (because they contain real values) and report
only digest texts and hashes. Samples are required for query analysis
because you can EXPLAIN them, which produces metadata necessary for
understanding query execution. Some query metric tools EXPLAIN a
sample, then discard it, and report the EXPLAIN plan (the output of
EXPLAIN). Others only report the sample, which is still very convenient:
copy-paste to EXPLAIN. If you have neither, then manually extract samples
from the source or manually write them when needed.
Two more clarifications about terminology and then I promise we’ll move
on to more exciting material. First, terminology varies widely depending on
the query metric tool, as shown in Table 1-1.
T
a
b
l
e

1
-
1
.
Q
u
e
r
y

m
e
t
r
i
c

t
e
r
m
i
n
o
l
o
g
y
Official (MySQL) Alternatives

SQL statement Query

Sample Query

Digest text Class, family, fingerprint, query

Digest hash Class ID, query ID, signature

Second, another term that originated from Percona is query abstract: a SQL
statement highly abstracted to its SQL command and table list. Example 1-2
is the query abstract for SELECT col FROM tbl WHERE id=1.
Example 1-2. Query abstract
SELECT tbl

Query abstracts are not unique, but they are useful because they’re succinct.
Usually, developers only need to see a query abstract to know the full query
that it represents.

Brevity is the soul of wit.


—William Shakespeare
It’s important to understand that SQL statements are normalized because
the queries you write are not the queries you see. Most of the time, this is
not a problem because digest texts closely resemble SQL statements. But
the process of normalization raises another important point: do not
dynamically generate the same logical query with different syntax, else it
will normalize to different digests and be reported as different queries. For
example, in the case of a programmatically-generated query that changes
the WHERE clause based on user input:

SELECT name FROM captains WHERE last_name = 'Picard'


SELECT name FROM captains WHERE last_name = 'Picard' AND
first_name = 'Jean-Luc'
Those two queries may be logically the same to you and the application, but
they’re different queries with respect to reporting because they normalize to
different digests. To my knowledge, no query metric tool allows you to
combine queries. And it’s technically correct to report those queries
separately because every condition—especially in the WHERE clause—
affects query execution and optimization.
One point about query normalization: values are removed, so the following
two queries normalize to the same digest:

-- SQL statements
SELECT `name` FROM star_ships WHERE class IN ('galaxy')
SELECT `name` FROM star_ships WHERE class IN ('galaxy',
'intrepid')

-- Digest text
SELECT `name` FROM `star_ships` WHERE `class` IN (...)

Since the digest is the same for both queries, the metrics for both queries
are grouped, aggregated, and reported as one query.
Enough about terminology and normalization. Let’s talk about reporting.

Reporting
Reporting is a challenge and an art form because a single application can
have hundreds of queries. Each query has many metrics and each metric has
several statistics: minimum, maximum, average, percentile, and so forth.
On top of that, each query has metadata: samples, EXPLAIN plans, table
structures, on so on. It’s challenging to store, process, and present all this
data. Almost every query metric tool presents the data in a two-level
hierarchy: query profile and query report. Those terms vary by query metric
tool, but you will easily recognize each when you see them.

Query profile
A query profile shows slow queries. It is the top-level organization for
query reporting, usually the first thing you see in a query metric tool. It
presents query digests and a limited subset of query metrics, which is why
it’s called a profile.
Slow is relative to the sort metric: the aggregate value of a query metric by
which queries are ordered. The first ordered query is called the slowest,
even if the sort metric is not query time (or any time). For example, if the
sort metric is average rows sent, the first ordered query is still called the
slowest.
Although any query metric can be the sort metric, query time is the
universal default sort metric. When you reduce query execution time, you
free up time that allows MySQL to do more work, or possibly do other
work more quickly. Sorting queries by query time shows you where to
begin: the slowest, most time-consuming queries.
What’s not universal is how query time is aggregated. The most common
aggregate values are:
Total query time
Total query time is the sum of execution time (per query). This is the
most common aggregate value because it answers an important
question: which query does MySQL spend the most time executing? To
answer that, a query metric tool adds up all the time MySQL spends
executing each query. The query with the greatest total time is the
slowest, most time-consuming query. Here’s an example of why this is
important. Suppose query A has a 1-second response time and executes
10 times, while query B has a 0.1-second response time and executes
1,000 times. Query A has a much slower response time, but query B is
10 times more time-consuming: 10 seconds in total versus 100 seconds
in total, respectively. In a query profile sorted by total query time, query
B is the slowest query. This is important because you free up the most
time for MySQL by optimizing query B.

Percentage execution time


Percentage execution time is total query time (per query) divided by
grand total execution time (all queries). For example, if query C has a
total query time of 321 ms and query D has a total query time of 100
ms, then grand total execution time is 421 ms. Individually, query C is
(321 ms / 421 ms) × 100 = 76.2% of grand total execution time, and
query D is (100 ms / 421 ms) × 100 = 23.8% of grand total execution
time. In other words, MySQL spent 421 ms executing queries, 76.2% of
which was spent executing query C. In a query profile sorted by
percentage execution time, query C is the slowest query. Percentage
execution time is used by some query metric tools, but not all.

Query load
Query load is total query time (per query) divided by clock time, where
clock time is the number of seconds in the time range. If the time range
is 5 minutes, then clock time is 300 seconds. For example, if query E
has a total query time 250.2 seconds, then its load is 250.2 s / 300 s =
0.83; and if query F has a total query time of 500.1 seconds, then its
load is 500.1 s / 300 s = 1.67. In a query profile sorted by query load,
query F is the slowest query because its load is the greatest.
Load is relative to time but also subtly indicative of concurrency:
multiple instances of a query executing at the same time. Query load
less than 1.0 means that, on average, the query does not execute
concurrently. Query load greater than 1.0 indicates query concurrency.
For example, a query load of 3.5 means that, any time you look, you’re
likely to see 3.5 instances of the query executing. (In reality, 3 or 4
instances of the query since there cannot be 0.5 instances of a query.)
The higher the query load, the greater the possibility of contention if the
query accesses the same or nearby rows. Query load greater than 10 is
high and likely to be a slow query, but there are exceptions. As I write
this, I’m looking at a query with a load of 5,962. How is that possible? I
reveal the answer in “Data Access”.

When the sort metric uses a nontemporal query metric, like rows sent, a
different aggregate value (average, maximum, and so on) might make sense
depending on what you’re trying to diagnose. This is far less common than
total query time, but it occasionally reveals interesting queries worth
optimizing.

Query report
A query report shows you everything there is to know about one query. It is
the second-level organization for query reporting, usually accessed by
selecting a slow query in the query profile. It presents all query metrics and
metadata. Whereas the query profile tells you something just by looking at
it (which queries are the slowest), a query report is an organized
information dump used for query analysis. As such, the more information,
the better because it helps you understand query execution.
Query reports vary dramatically depending on the query metric tool. A bare
minimum report includes all query metrics from the source and the basic
statistics for those metrics: minimum, maximum, average, percentile, and so
forth. A thorough report includes metadata: query samples, EXPLAIN
plans, table structures, and more. (Samples may be disabled for security
purposes because they contain real values.) A few query metric tools go
further by adding additional information: metric graphs, histograms
(distributions), anomaly detection, time shift comparison (now versus last
week), developer notes, SQL comment key-value extraction, and so on.
Query analysis only requires query metrics in the report. Metadata can be
collected manually. If the query metric tool you use reports only query
metrics, don’t worry: that’s a start, but you will need to manually collect
EXPLAIN plans and table structures, at the very least.
With a query report figuratively in hand, you’re equipped for query
analysis.

Query Analysis
The goal of query analysis is understanding query execution, not solving
slow response time. That might surprise you, but solving slow response
time happens after query analysis, during query optimization. First, you
need to understand what you’re trying to change: query execution.
Query execution is like a story with a beginning, middle, and end: you read
all three to understand the story. Once you understand how MySQL
executes a query, then you will understand how to optimize it.
Understanding through analysis, then action through optimization.

TIP
I have helped many engineers analyze queries, and the primary difficulty is not
understanding the metrics but getting stuck in the analysis: staring deeply into the
numbers, waiting for a revelation. Don’t get stuck. Carefully review all the metrics and
metadata—read the whole story—then turn your attention to query optimization with
the goal of improving response time.

The following sections address key aspects to an efficient and insightful


query analysis. Sometimes the cause of slow response time is so obvious
that the analysis reads more like a tweet than a story. But when it’s not—
when the analysis reads like a graduate thesis on French existentialism—
understanding these aspects will help you find the cause and determine a
solution.

Query Metrics
From “Sources”, you know that query metrics vary depending on the
source, MySQL distribution, and MySQL version. All query metrics are
important because they help you understand query execution, but the nine
metrics detailed in the following sections are essential to every query
analysis.
The Performance Schema provides all nine essential query metrics.
NOTE
Query metric names also vary by source. In the slow query log, query time is
Query_time; but in the Performance Schema, it’s TIMER_WAIT. I don’t use either
convention. Instead, I use human-friendly names like query time and rows sent. Query
reporting almost always uses human-friendly names, too.

Query time
Query time is the most important metric—you knew that already. What you
may not know is that query time includes another metric: lock time.
Lock time is an inherent part of query time, so it’s not surprising that the
latter includes the former. What’s surprising is that query time and lock time
are the only two time-based query metrics, with one exception: the Percona
Server slow query log has metrics for InnoDB read time, row lock wait
time, and queue wait time. Lock time is important, but there’s an
unfortunate technical gotcha: it’s accurate only in the slow query log. More
on this later.
Using the Performance Schema, you can see many (but not all) parts of
query execution. This is off-topic and beyond the scope of this book, but it’s
good awareness so you know where to look if you need to dig deeper.
MySQL instruments a bewildering number of events that the manual
defines as, “anything the server does that takes time and has been
instrumented so that timing information can be collected.” Events are
organized in a hierarchy:

transactions
└── statements
└── stages
└── waits

Transactions
Transactions are the top-level event because every query executes in a
transaction (Chapter 8 covers transactions).
Statements
Statements are queries, to which query metrics apply.

Stages
Stages are “steps during the statement-execution process, such as
parsing a statement, opening a table, or performing a filesort operation.”

Waits
Waits are “events that take time.” (This definition amuses me. It’s
tautological and oddly satisfying in its simplicity.)

Example 1-3 shows the stages for a single UPDATE statement (as of
MySQL 8.0.22).
Example 1-3. Stages for a single UPDATE statement
+----------------------------------+-------------------------------
---+-----------+
| stage | source:line
| time (ms) |
+----------------------------------+-------------------------------
---+-----------+
| stage/sql/starting |
init_net_server_extension.cc:101 | 0.109 |
| stage/sql/Executing hook on trx | rpl_handler.cc:1120
| 0.001 |
| stage/sql/starting | rpl_handler.cc:1122
| 0.008 |
| stage/sql/checking permissions | sql_authorization.cc:2200
| 0.004 |
| stage/sql/Opening tables | sql_base.cc:5745
| 0.102 |
| stage/sql/init | sql_select.cc:703
| 0.007 |
| stage/sql/System lock | lock.cc:332
| 0.072 |
| stage/sql/updating | sql_update.cc:781
| 10722.618 |
| stage/sql/end | sql_select.cc:736
| 0.003 |
| stage/sql/query end | sql_parse.cc:4474
| 0.002 |
| stage/sql/waiting handler commit | handler.cc:1591
| 0.034 |
| stage/sql/closing tables | sql_parse.cc:4525
| 0.015 |
| stage/sql/freeing items | sql_parse.cc:5007
| 0.061 |
| stage/sql/logging slow query | log.cc:1640
| 0.094 |
| stage/sql/cleaning up | sql_parse.cc:2192
| 0.002 |
+----------------------------------+-------------------------------
---+-----------+

The real output is more complex; I simplified it for easy reading. The
UPDATE statement executed in 15 stages. The actual execution of the
UPDATE was the eighth stage: stage/sql/updating. There were 42
waits, but I removed them from the output because they’re too far off topic.
Performance Schema events (transactions, statements, stages, and waits) are
the fine details of query execution. Query metrics apply to statements. If
you need to dig deeper in a query, look in the Performance Schema.
Efficiency is our modus operandi, so don’t get lost in the Performance
Schema until you need to, which may be never. Query time is sufficient.

Lock time
Lock time is time spent acquiring locks during query execution. Ideally,
lock time is a minuscule percentage of query time, but values are relative
(see “Relative Values”). For example, on one extremely optimized database
that I manage, lock time is 40% to 50% of query time for the slowest query.
Sounds terrible, right? But it’s not: the slowest query has a maximum query
time of 160 microseconds and a maximum lock time of 80 microseconds—
and the database executes over 20,000 queries per second (QPS).
Although values are relative, I can safely say that lock time greater than
50% of query time is a problem because MySQL should spend the vast
majority of its time doing work, not waiting. A theoretically perfect query
execution would have zero wait time, but that’s impossible due to shared
resources, concurrency, and latency inherent in the system. Still, we can
dream.
MYSQL STORAGE ENGINES AND DATA LOCKING
Before I explain more about lock time and locks in general, let me
clarify some background information.
MySQL has many storage engines—and a history of storage engines,
but I won’t bore you with that. The default storage engine is InnoDB.
Other storage engines include: MyISAM, MEMORY, TempTable, Aria
with MariaDB, MyRocks with Percona Server and MariaDB, XtraDB
with Percona Server, and more. (Fun fact: the Performance Schema is
implemented as a storage engine.) In this book, InnoDB is implied
unless stated otherwise.
There are table locks and row locks. The server (MySQL) manages
tables and table locks. Tables are created using a storage engine
(InnoDB by default) but are storage engine agnostic, meaning you can
convert a table from one storage engine to another. Row-level locking is
managed by the storage engine if supported. MyISAM does not support
row-level locking, so it manages data access with table locks. InnoDB
supports row-level locking, so it manages data access with row locks.
Since InnoDB is the default storage engine, row-level locking is
implied unless stated otherwise.

NOTE
InnoDB also has table locks called intention locks, but they’re not important for
this discussion.

There are metadata locks managed by the server that control access to
schemas, tables, stored programs, and more. Whereas table locks and
row locks control access to table data, metadata locks control access to
table structures (columns, indexes, and so on) to prevent changes while
queries are accessing the tables. Every query acquires a metadata lock
on every table that it accesses. Metadata locks are released at the end of
the transaction, not the query.
Discovering Diverse Content Through
Random Scribd Documents
endless voice drew to a close at last, her heart choked her breath
with terror; she drove her nails into the palms of both her hands,
and kept her eyes firmly bent upon the ground. She would not look
up, even if she were addressed, and he would see that she did not
mean to answer.
‘Alice Robson, tell us, please, how the Lord has been dealing with
you.’
The shock of relief, and perhaps of disappointment—relief and
disappointment can be so strangely mixed!—was considerably
softened for Annie by the wonder how Alice would ever be able to
find courage enough to speak. She need not have wondered, for in
spite of her reserve the farmer’s daughter could bear such an ordeal
well. Alice answered softly and very modestly, but yet in a manner
that arrested attention; for the absence of formality is a quality to be
noticed in a Class.
‘I’ve been troubled lately,’ said Alice, softly, quietly, with a slight
quiver in her voice, a faint colour in her cheek; ‘I’ve been thinking of
one as seems to be in danger, and feeling as if in some way I ought
to help. An’ then I’ve wondered if it was all selfishness in me, an’ if I
was really only feared to lose a friend; but I hope I’ll be taught to
feel as I ought to do, an’ as the one I fear for ’ll be kept from harm
an’ wrong.’
Mr Bender bent towards her to give her his advice (he had only
said a few words in answer to the first member’s speech), whilst the
whole class was stirred by some visible curiosity with regard to the
mysterious friend of whom she had spoken. ‘It’s Tim,’ thought Annie,
after rapid consideration, with which was mingled a thrill of
irresistible anger—of anger that the mention of one whom she had
learned to think her property could bring the colour to another
woman’s cheek. So hopelessly mistaken do we all become when we
attempt to penetrate another’s heart.
For Alice had bent her head, the words of advice being ended,
with all her mind full of fear and prayer for Nat, the passionate,
wilful boy who clung to her heart by the very reason of his passion
and wilfulness. ‘She isn’t a good girl—oh! she’s not,’ cried Alice; ‘she
likes every man as comes near to look at her; an’ he seems so
excited about it—an’ I can’t think it is good for him to come up to t’
Farm, an’ work for her. Mr Bender says I’m to trust, but it is hard to
go on trusting when everything goes wrong.’ It was perhaps natural
that she should not question herself about the nature of the feeling
that wrung such fear from her. She kept her head bent and did her
best to ‘trusten,’ though with some soreness of perplexity in her
heart.
The other members had meanwhile had their say, and in speeches
of varying length had all attempted to communicate their spiritual
condition to Mr Bender’s ears. It must be owned that they were
rather less than more successful, unless indeed he had the
discernment to read between the lines—and such discernment was
not especially apparent in the words of advice which he addressed to
them. The six who spoke were of very different ages, from the stout
mistress of the house to an hysterical servant-girl; the other four
being two sisters, dressmakers, the young wife of a labourer, and a
teacher in the village-school. These related their feelings in
conventional sentences, to which he replied with words of
exhortation; the regularity being only broken by the trembling
servant-girl, who thought herself reproved, broke down all at once,
and sobbed. When she had been consoled by Mr Bender, who
became somewhat agitated, the line of speakers was completed; for
with one exception, the stranger and visitor, each had taken her
part, and had no more to say. There followed a pause, and all began
to wonder whether it was not time for the Class to be closed.
‘It is not late,’ said Mr Bender, nervously, without daring this time
to raise his eyes from the ground; ‘we have a few minutes in which
it may be possible for us to listen to one more experience. Will our
sister, who is a stranger, consent to be persuaded to say a few words
about herself to us?’
Silence. Excitement. Annie sat resolutely upright, with her eyes as
resolutely downcast; her face burning, her heart throbbing, and her
lips compressed. Mr Bender glanced at her with visible
disappointment; he waited an instant, then he spoke to her again:
‘We Methodists have learned the comfort of joining together when
we wait on the Lord; we believe that we are often able to find
consolation and instruction from the lips of each other at such times
as these. Has our sister any difficulty on which she would ask our
advice, or any sorrow which she may ask us to share?’
Still silence. Greater excitement. The face of Annie was flaming,
but her lips continued to close upon each other. For one instant the
minister gazed upon her silently, then he rose from his chair, and
gave the number of the hymn. If, at that moment, she felt the
impulse of confession, it was then too late, and the time for speech
was gone.
Ah! would it have been better if that troubled, silent nature could
have compelled itself to speak, to give words to the conflict that
raged within its heart, and seek for some help that might avail to
save? Would future misery have been averted, if that opportunity
had met with response? I cannot tell; I can only say, that to Annie,
such public confession would have been unnatural; her whole nature
shrank from laying bare to strangers the inmost recesses she veiled
even from herself. She had come to the Class with some vague hope
of assistance, but it was not in such ways that her trouble could find
relief; to speak of her anguish seemed impossible, and she could not
speak without speaking honestly. And yet, at that moment, she was
troubled, thrilled, excited, her heart had been touched, although her
lips were silent! She stood with the members, and from their united
tones came the pathetic cadence of a hymn—she heard the voices of
her companions rise and fall, if she had opened her own lips she
would have broken down into tears.

‘When the weary, seeking rest, to Thy goodness flee,


When the heavy-laden cast all their load on Thee,
When the troubled, seeking peace, on Thy name shall call,
When the sinner, seeking life, at Thy feet shall fall ...
Hear then, in love, O Lord, the cry, from heaven, Thy dwelling-
place on high.’

The voices ceased, the members knelt, prayed silently, rose again,
the Class meeting was over....
Scarce a word passed between the two girls, as, unaccompanied,
they found their way over the fields towards their homes, whilst
slanting sunlight fell on them, and on the meadows, and on corn-
fields ripening beneath the summer sun. At the gates of the yard
they paused and kissed each other, then silently separated, and
Annie went on to her home; her passionate thoughts still struggling
beneath an impulse of duty which had been unknown to her before.
‘I will be good,’ thought poor Annie, desperately; ‘I willent meet
him within the fields again; if he wants to have me he must come up
to t’ house, and tell before mother all he has to say. I would ha’ told
mother about him long ago, but I didn’t like sin’ he allays begged me
not; it seemed so hard on him as is like a gentleman to be tied to
me who am but a village girl. But I will be honest; I’ll have no
double-dealing; I’ll give him up sooner than do wrong for him.’ As
the words trembled on her lips she turned the handle of the cottage
door; she entered and crossed the threshold of her home. And in an
instant she stood still, struck with dismay—her father was there, he
had returned once more.
CHAPTER XIII
THE RETURN OF THE FATHER AND THE LAST OF THE RANTAN

YES, there he sat, there could be no doubt about it—he sat in his
wooden chair upon one side of the hearth, a wan, blear-eyed,
crouching, shivering specimen, too visibly in a condition of tipsiness.
Annie had been used to her father in every stage of drink, and could
see at once at what phase he had arrived, a state of virtue and
moral indignation, ready to be maudlin at the first opportunity. At a
little distance, with pale, indignant looks, though not near each
other, sat his wife and son—Jenny upright, silent, her lips stern and
compressed, a strange expression for her timid face to wear. She did
not draw close to Nat, nor he to her, rather they preferred to remain
obviously apart—it was evident that if she was divided from her
husband she was also for some reason separated from her son.
Indeed there had been a painful scene that morning; as Annie, on
her part, had good cause to know, though the religious excitement
that she had since experienced had driven the scene of the morning
from her mind. She stood by the door now, uncertain what to do,
her pulses quivering, and her face aflame.
‘It’s a pretty thing, isn’t it?—er—er—?’ cried Rob to her, addressing
her as a stranger who had come into the house, ‘it’s a nice, good
thing I should come into my dwellin’, an’ be welcomed i’ this way by
my wife an’ son. There’s my wife she wo-ant kiss me for all I ask her
to—she’s too good for me, happen—’ and here for a while he cried
—‘or it’s like as she’s doin’ what she don’ want me to know, an’ is
ashamed when an honest man comes ho-am.’
‘You needn’t go tellin’ your vile, wicked thoughts,’ cried Jenny,
absolutely excited into speech; ‘or think as there’s any one at’ll
believe ye, when ye set for to take away my character. Ye’ve been
my disgrace an’ shame sin’ we were wed; an’ t’ boy, he’ll be like ye,
it is like enough—if ye’d set about to train him and correct him, there
might a bin some chance for him, but now there’s none.’
‘There ye go!—ye’re on at my trainin’ an’ correctin’,’ burst out Nat,
his young face afire with rage and shame; ‘ye’d set my father upon
me if ye could—but I can’t have t’ strap now, I’m too old for that.’
And Rob faltered with tears that t’ boy had a fine spirit—he was
his boy, an’ was not t’ mother’s son.
‘Come an’ kiss me, Nat—come an’ kiss me,’ he whimpered, ‘t’
mother she haven’t no heart for either on us—she’ll be tellin’ me as I
am in drink, it’s like; when I haven’t not touched a drop sin’ I was
here. But ye will kiss me—an’ then ye’ll come wi’ me—an’ we’ll make
our fortunes, an’ get away fro’ here.’
‘Go an’ kiss your father, Nat,’ said Jenny, slowly and coldly—and
the boy got up from his chair, but then stood still, for even the sense
of his mother’s scorn was not sufficient to induce him to go near his
father. He stood still, trembling and troubled, without being able to
decide to which side to turn, to the wrath and righteousness in his
mother’s eyes, or the unalluring vice that asked for an embrace. His
hesitation had a voice more plain than words, and Rob’s sense of
injury found a new direction.
‘Do ye think as ye’ll go to disobey me, ye little d—d scoundrel?’
cried the father’s wrath; ‘I’ll teach ye, an’ leather ye, an’ shew yer
mother too as I’m goin’ to be master, whatever she may say. Ye dare
to come near me! I’ll know how to teach ye; ye give me t’ cha-ance,
an’ I’ll make use on it.’
‘I’m not afraid,’ answered Nat, with resolution, and he did indeed
take one step towards his father; but in an instant, with a little cry of
terror, poor Jenny rushed forward and threw herself between. She
was not always ready to forgive her son, even when such
forgiveness might have brought him to her feet; but she was ready
to be struck in his stead at any moment, even whilst not forgiving
him—that is a mother’s love. Rob did raise his hand; but confused by
a change of victims, he let it drop, and fell once more into tears—he
whimpered that it was a strange thing for a man to come back, and
not find that his ‘people were proud to meet wi’ him.’
Proud to meet with him!—the shivering, drunken wretch,
crouching over the fire in the home that he disgraced, the words
might even have been considered ludicrous, as if any family could by
possibility be proud of him! But in the midst of the silence into which
his words had fallen, whilst Jenny sat upright and rigid, still and
pale, whilst Annie stood quivering, trembling, by the door, and Nat,
still angry, had almost broken down into tears—whilst the members
of the little family were all miserable, convulsed, absorbed in the
private woes in which the outside world is lost—it was at that instant
that there echoed in the distance a clang which, to three of the four,
was a too familiar sound. The last night had come—the greatest
night of all! and the village Rantan was on its way again.
‘Good be with us! what’s that?’ cried Rob, who was so much
startled, that for the moment the shock almost sobered him; the
more so as he saw in the faces of his family an unmistakeable
evidence that the noise concerned himself. A sudden remembrance
of the Rantan frolics, in which he had joined himself when a
younger, better man, a sudden horror of shame and indignation
rushed down upon him, and for a moment choked his breath. He sat
silent, panting, the excitement of drink in his eyes, at that moment
almost like the dark, handsome suitor who had wooed pretty Jenny
in her girlish days. And now the clamour had turned into the lane,
and they could hear the hooting and laughing of the lads—Rob could
hear his own name in shouts, groans, and hisses, accompanied by
such opprobrious titles as village wit could furnish. It was too much;
the small amount of reason he had left combined with his
drunkenness to urge him to resist; with a sudden, fierce movement,
he flung himself from his seat, and rushed to the door, which he
banged behind his back. The sound of the clamour was increased
and yet interrupted by the noise of the different tumult which now
broke upon its course—the noise of a scuffle, of blows, of hasty
warfare, a confusion of steps and voices .... then, a fall.
And in an instant, overcome by a sudden terror that would not
allow even her pride to keep her still, poor Jenny flung the door
open as wide as it would go, and stood before her adversaries on
the threshold of her house. She stood there, a slight figure in the
summer evening light, and the respect in which she was always held
imposed a silence that was deep and universal, and that fell on the
motley crowd with a sudden calm. They had another and graver
cause for silence; a fear of consequences was rising in their hearts,
for there in the lane, a prostrate, motionless figure, a young man lay
with his head in pools of blood.
‘Ye needn’t fear, missus,’ cried our old acquaintance Bill,
recovering first from the panic of the crowd; ‘there’s not so much
harm done as ye might go to think; these young uns are tough, and
he’ll get up again. It is Tim Nicol—poor Tim, as ye know well—he’d
come down to try an’ turn t’ lads away—an’ Rob he supposed he was
doin’ harm, it’s like, for he caught up a clatch o’ wood, an’ made at
him. Ye’ll let him be brought into your house for a bit; Rob has got
off, an’ he’s not like to come back.’
They lifted the prostrate figure gently, and carried it into Jenny
Salter’s home; whilst she stood there, silent, pallid, unresisting, as
one who has been too much stunned with grief to move. The whole
Rantan was in confusion in the lane, the grotesque banners were
lowered, the clanging pans were silenced, the lads were gathered in
terror-stricken groups, appalled at the consequences of their fun. No
one noticed that from the back-door of the cottage an unseen figure
had fled into the fields—it was Annie, with wrath and terror in her
heart, escaping from this fresh misery in her life. Alas! the poor child
—and alas! for such poor children who find their incentives to evil
within the shelter of their homes.
The Rantan was scattered, dispersed to right and left, its
members escaped almost in silence through the streets; there was
no bonfire, no concluding ceremony, there had never been a Rantan
come to such an end before. Yet it may be that after all it had
accomplished more than previous Rantans had done, for issues and
sequences are not to be calculated by the careless hands that set
such trains on fire. As the corn ripened slowly to its harvest-time,
the echoes of that summer evening may have been working still.
CHAPTER XIV
IN SUMMER DAYS

THE August sunshine of a brilliant afternoon was shining upon the


yard of the Manor Farm when Mr James Gillan came out from the
house, and mounted the horse that the yard-boy held for him. It was
an auspicious afternoon for his expedition, the first splendid weather
that had been for many days.
For it had been a cold summer, and the harvest was very late, the
shimmering green of the barley having only just begun to turn pale
beneath the sun; though the wheat, more forward, more ready for
the reapers, was beginning to ripen to gold beneath its rays. A sober
summer! with but little unclouded splendour, with fields softly tinted
beneath a fleecy sky; or with shadowy foregrounds and deep blue
distances, between which the bright light fell upon the corn—a
summer of lights and shades, and of varying circumstances, amidst
which the harvest got ready as it could. They talked even in the lane
near the Thackbusk of the danger to the crops, though from the
Thackbusk gate there was no corn-land to be seen, only willows and
marshy fields along which at eventide the sinking sunshine lay in
rays of level light. That little lane, where was Jenny’s cottage home,
was very quiet and free from disturbance now; the grey cottages
stood on one side, and the white upon the other, and on one of the
grey walls some pink rosebuds were blooming. No one would have
supposed, at sight of its sober look, that the clang of the Rantan had
ever echoed there.
And yet ...
People afterwards said when they talked of those summer days
that Mrs Salter had been very ‘still an’ skeared;’ and they certainly
remarked at the time that ‘she held her head so high there was no
gettin’ near to speak a word wi’ her.’ But the pre-occupation upon
poor Jenny’s face had seemed only natural after what had passed;
and none thought that in addition to her fears for her fugitive
husband she might be anxious for her boy and girl as well—that was
not thought of till other days had gone, and the neighbours could
speak of the ruin to which boy and girl had come. For, although their
wisdom came after the event, some threads of doom were indeed
being woven in the course of those summer days.
It was remembered afterwards, for instance, that there had been
a change in Annie, which was not such a change as might have been
expected; for she did not seem restless, disconsolate, or passionate,
as she might well have been after the event of the Rantan. She held
her head high, and looked more beautiful than before; her dark eyes
were full of a childish, glowing light; and she kept herself resolutely
apart from all her neighbours, as one who prefers to be quiet and
dream alone. To Alice, whom she met once, she whispered softly
that she had ‘made up her mind, and would not be troubled now;’
and yet her expression was not that of one who is at peace. Had she
made up her mind on the night of the Rantan, when she fled away
from the misery of her home; and were the hours of those golden
summer days leading her to an event that lay close before her now?
No one knew, for she said no word, even to her mother; but it was
remembered afterwards that she had been industrious and silent,
and had bent continually over some pieces of needlework, which she
said she must finish ‘before autumn came.’ Now and then, in the
evening, she would be absent from her home, on her return refusing
obstinately to say where she had been; and once or twice her
mother found her on her bed, in convulsive, passionate weeping
which could not be accounted for. But she remained silent, as it was
her wont to be, and was busy and quiet, though there was the
strange light in her eyes; and no one who saw her pure, childish
beauty would have been easily ready to believe much evil of her. For
Annie had been educated to the ideals of her mother, which were
higher than those which most village mothers own; and although her
disposition was wild and passionate it seemed too lofty to incline
easily to falls. And yet—dare we say that any feet are safe from peril
—we who are aware of the countless snares of life?
One safeguard was lost to Annie, for Tim could not see her now;
he had been removed to the Farm, where he lay ill, watched over
with tenderness by Alice and her mother, but shut out from all other
society by the doctor’s law. He had been removed to the Farm
before his consciousness returned—otherwise he might possibly
have preferred the cottage in the Thackbusk lane—and perhaps in
his heart he felt some slight impatience at the restraint which kept
him in his room. But Mrs Robson was kind, and her daughter very
helpful, and it would have been ungrateful to show discontent to
them. He liked to think that Annie must be anxious, and that when
he was stronger he would visit her again; Alice did not tell him that
Annie Salter made no inquiries, nor even Nat, though he was often
at the Farm. In her heart she blamed both the brother and the sister
for their silence, but she imagined that some feeling of shame made
them conceal the interest they felt. For it was known that their
father’s hand had struck the blow—there was not a man in the
village who was not aware of the fact. And Nat seemed altered; he
had an uneasy, hungry look, as if for some reason all was not well
with him.
So matters were going on that August afternoon when Mr James
Gillan mounted his horse in the Manor yard, whilst the pigeons
sunned themselves upon the roofs. A well-dressed, slender-figured,
well-appointed gentleman, he aroused the admiration of the boy
who held his horse; even though he appeared to be in a state of
abstraction from which he could not rouse himself to any expression
of gratitude in the shape of thanks or fee. Was it possible that in the
mind of this easy-tempered gentleman were some perplexities that
he knew not how to solve, that some woven threads that he could
not disentangle were beginning unpleasantly to cling about his life?
His delicate eyebrows were knitted, almost frowning, above the
languid eyelids that drooped upon his eyes; and he did not raise his
head to where, from a passage window, his sister stood watching his
departure from the yard. He passed the red School-house with its
white lilies, and, taking the turn to Lindum, rode on to the town.
CHAPTER XV
MR JAMES GILLAN MEETS HIS UNCLE

THE white sun was sinking lower in the west, above the valley at the
foot of Lindum hill, when Mr Lee rose from his chair in his private
apartment to welcome the nephew who was shown into his room. It
was the first time, in the course of their mutual lives, that the
nephew had set foot in his uncle’s house.
An abode of wealth! and yet there were few signs of riches in the
scantily furnished, bare, and matted room, beneath whose windows,
in grey, shining haze, lay the extensive prospect of the valley
beneath the town. A hard room, full of unornamental book-cases,
with one small table, severely erect and square, and on that a heavy
desk, a solid inkstand, some piles of papers, a pen-wiper, and a
purse. The eyes of the nephew wandered to these things before he
accepted the hand held out to him; and it was not until he was
seated, and his mind was more composed, that he ventured to raise
his glance to his uncle’s face. It was not often that he was agitated,
but then this interview meant so much to him!
Mr Lee, on his part, had found no difficulty in surveying his visitor
with a steady gaze; though even for him there was a little agitation,
displayed in the colour that mounted in his face. Perhaps the sight of
his sister’s son affected him, the sister towards whom he had been
unforgiving, and who was dead; or perhaps he almost repented the
relenting that had induced him to send to his nephew and demand
an interview. His original refusal to see his young relations for a
while had been so firm, had been so uncompromising! and yet for
once he had actually changed his mind, not only before winter, but
even before autumn came. Some feeling of curiosity may have
prompted him, or some remonstrance of the Squire who was his
friend, or the fact that during the last month he had been ill, and
that he was a lonely man, and that his wealth had no heir. Whatever
the cause, his change of action was now a fact, for here before him
was the young man, his sister’s son.
At such moments the first glance counts for a good deal; indeed,
the impression it leaves is of almost unfair importance, for it is often
difficult afterwards for our sober, solid, reason to counteract its
influence. Mr Lee saw before him a young man, tall and slender, with
a delicate face into which a nervous colour stole; with drooping
eyelids, and thin, fine, hair, a delicate complexion, and nervous,
parted lips. A graceful figure, a face not without charm, an attire
refined and carefully arranged; the most hostile adversaries,
speaking honestly, could not have been bold enough to deny these
advantages. They might have denied that the gentle-featured face
gave the smallest indication of steadfast principles, but then we are
not accustomed to look for unwavering resolution in the
countenance of a young man of three-and-twenty years. And it is
certain that in the course of a wandering life Mr James Gillan had
gained an appearance of good-breeding; the son of a wandering
actor, he had yet acquired refinement, and had the look and the
words of a gentleman. This appearance, moreover, was intensified
by the attractiveness of a gentle, pleasing face; and a quiet manner,
which was a positive relief to the uncle who had seen his sister’s
books and songs. And yet the old man, a keen and shrewd observer,
was not altogether satisfied, in spite of his relief.
A contrast himself!—Mr Lee was not refined or pleasing, but his
grey eyes were clear and bright beneath his brows, and every line of
his harsh, rugged face was graved with a decision that almost rose
to power. A passionate face, but with passion well-subdued, a face
untender, proud, and illiterate, not softened by love, not refined by
education, not enlarged by wide views, and general sympathy. The
son of a grocer, a dealer in provisions, then a general merchant of
large and wide success, he had pursued an honoured and
industrious career, and had retired from business a respected,
wealthy man. The unfortunate circumstances attending his early
marriage had debarred him from the most softening influences of
life; though, with the want of refinement that characterised his
words, he had made into his favourite joke that long-past tale. That
was the man! he could keep a promise honourably, indeed with a
scrupulous honour that rose to chivalry; but no delicate tact, such as
sensitive natures own, would hinder him from boasting of a promise
he had kept. Not parsimonious, but not at all luxurious, he had not
the least love for society and its ways, and his establishment at the
top of Lindum Hill was conducted with the utmost simplicity, though
not penuriously. In the house with him were only his favourite
attendant—a dark-faced, under-sized, active boy—an old woman
who was his housekeeper and cook, and her husband, who had
been his coachman many years. The cathedral bells chimed at a little
distance from the house; beneath it lay the valley in endless lights
and shades; and Mr Lee, though but little impressed by sight or
sound, made himself comfortable, and was content. Only sometimes
the remembrance of his conduct to his sister affected him with a
slight sensation of remorse; and he had been lately ill, and still was
feeble, and he was solitary, and his riches had no heir. These various
reasons, acting on each other, had produced the change in his
purpose which we have seen—he had written to his nephew to ask
for an interview, and now was receiving him at his own request. No
such very great change after all, but Mr Lee was always accustomed
to cling to all purposes with tenacity.
If in the mind of the young man close to him, who sat with his
eyelids down-cast, waiting humbly for him to speak, there was being
waged a conflict, more uncertain, more terrible, the uncle at any
rate saw no signs of it. For the contest between our love and our
ambition lies low in our heart, out of reach of human eyes; and the
supreme moments in which the fight is hottest pass on without
observation from the world. James Gillan gave only one sudden,
stifled gasp, as if he had found that there was no air in the room;
and then, with his head inclined and his fingers loosely clasped, sat
waiting to hear what his companion had to say. For—‘So you have
come here, sir,’ said Mr Lee, ‘that’s as it should be, since I have to
speak with ye.’
CHAPTER XVI
AN OMINOUS CONFLICT AND A FINAL RESOLVE

‘I HAVE come, sir,’ James Gillan said, raising his eyes modestly, ‘in
consequence of the letter from yourself which I received to-day. If I
had not received it you may be sure that I should not have ventured
to intrude upon you.’
He made the statement quietly, and with apparent self-
possession, although he knew that a conflict was raging in his heart,
from the remembrance of another plan, and of very different hopes,
which had nearly reached their fulfilment by the time the letter
came. ‘Oh, would it have been better,’ this was the cry of the
conflict, ‘if I had made up my mind to that, and had not come here
at all?’
‘Oh, ah, ye speak well, sir, ye express yourself very well,’—the
uncle was only half-pleased with his readiness—‘ye’ll have been
educated, I make no doubt of it, and are able to have opinions for
yourself. When my poor sister would go off with a stranger it was
never my thought that she went to luxury, but ye and the girl seem
to have been brought up easy-like, and to have had your share of
the pleasures o’ the world. I hope as ye’ve had some real instruction
too, to which ye can turn your heads and hands to-day.’
‘My sister, and myself,’ said James Gillan, quietly, ‘have had a
wandering life, and an unsettled education, from which we have
gathered such knowledge as we could. My father was a man of
talent, I may say of many talents, but he did not meet with steady
professional success; and I know that he regretted his inability to
give us as much instruction as he wished. I think I may say, for my
sister and myself, that we would like a less unsettled and securer
life; but it is not yet a year since the death of both our parents, and
we have not had time to find employment for ourselves. If you,
being a relation, could give us any assistance, you may be certain at
least of our gratitude.’ He spoke with the smile that disarms hostility
giving pleasant lines to his lips, though it scarcely touched his eyes—
the rarely lifted eyes which, being blue in colour, had more distinct
beauty than any other feature in his face. Mr Lee was not insensible
to the charm of glance and smile, but he was also aware that he did
not know their meaning yet.
‘Oh, ah, industrious!’ he said, not without sarcasm, with the
raillery, rough if not rude, that was peculiar to him; ‘you would make
me into an office or a registry, to find you places that you may go
an’ work. That’s very fine; I’m glad of that sort o’ spirit, it isn’t too
common in these idle days. But tell me, nephy, an’ speak for my
niece as well, is that all that ye think ye may expect from me?’
Before his keen glance the young man’s eyelids fell; but that
discomfiture was only momentary, and with renewed assurance he
raised his eyes again. A fine tact, a tact that is not common in the
world, can make even an essentially timid nature brave at times, for
it is able to be aware of the fitting moment when secret purposes
may be helped by honesty. If James Gillan were open-hearted his
countenance belied him, but at this moment his words were direct
enough.
‘I think, sir,’ he said, with a little hesitation, but not more than was
natural in so young a man, ‘I think .... if you ask me .... that I must
reply that if we cannot expect we yet might hope for more.’ And
then, feeling rather than seeing his uncle’s gaze upon him, he went
on with resolution, although his colour rose; ‘We have no parents ....
I believe you have no children .... there are many ways in which you
might do well by us.’ The sense of his daring almost stopped his
breath—on the issue of those few words he had staked his future.
Mr Lee was staggered; he rose up from his seat; he walked with
firm paces straight across the room; he stood by the window as if he
were looking at the valley on which already the evening radiance
fell. In spite of himself his nephew’s words had pleased him, the
challenge he had flung had been accepted courageously; whatever
might be this young man’s faults and failings, it was obvious that he
was not without qualities. And then, the readiness, the refinement of
his visitor, were beginning at length to impress him favourably; if he
had been partly repelled by them during the first few minutes, he
felt the reaction in their favour now. It needed the remembrance of
all he had seen and heard during his visit to the Manor Farm in the
absence of his relations, to recall to him the caution which, although
it was habitual to him, he felt for once almost disposed to drop. For
he was a lonely man .... he did not know how to spend his money
.... and if these young relations would submit to him ....
With a decided movement—but then his movements were always
decided—he turned away from the window, and the evening glow on
the valley: and with a few strides crossed the room, and stood by
the table near which his nephew sat. He stood with his hands resting
on it, a favourite attitude, looking down on the young man, his harsh
features furrowed and rugged with an agitation, which rendered it
difficult for him to speak at once. There was no sign of emotion,
however, in his hard, dry voice, when at length he spoke.
‘Nephy Gillan,’ he said, ‘I’ll deal direct by ye, as ye, on your part,
have dealt direct by me; I’ve got some money—I’ve got a deal o’
money—an’ I’d as lieve waste it on ye as on charities. But then, ye
see, I don’t know ye well eno’, and I’m not quite satisfied with all
I’ve heard on ye—I don’t want to give money, as ye’ll well
understand, for a girl to flurret, an’ a boy to gamble with.’
It was a home-thrust, and the young man’s head bent again,
although less in surprise than in perplexity; for it was not easy to
decide in the first instant in what manner these accusations should
be met. He was not aware of the extent of his uncle’s information,
and it might be dangerous to attempt denials; and, moreover, the
past scrapes of himself and Tina were subjects on which he did not
wish questions to be asked. It appeared safer, therefore, to assume
humility—the humility that disarms opposition and in that way
defends itself.
‘I think I told you,’ he said after a pause—a pause not long
enough to give suspicion time to wake—‘that we have had a
wandering life and an unsettled education; and I don’t doubt that to
you that sounds like idleness. But it is our wish to find work for
ourselves—assisted, if you will, by your generosity; and I am sure I
may say that if you will consent to help us you will not find that you
have any reason to complain.’ There was a slight sound of hesitation
in his voice; but, in spite of that, he got through the words well
enough.
‘Ye are meaning to tell me,’ Mr Lee looked at him fixedly, ‘that, if I
were to take ye into my house to-day, ye wouldn’t waste money, an’
your sister wouldn’t flurret, an’ ye’d give up your old acquaintances,
an’ be all as I could wish.’ A sudden, sharp pang pierced to the
young man’s heart; for a moment it contracted his features, then he
looked up and smiled. That smile meant assent, and he knew it
meant assent; in that moment, for the sake of his ambition, he
renounced his love.
‘Hum—hum—’ said the old man, and sat down, and got up again,
and stood by the window, and then walked about the room; and
then, pausing once more by the side of the table, remained with his
head bent, absorbed in thought. His companion was aware that on
the issue of those moments depended the lives of his sister and
himself, but he sat quietly waiting the event, and only clenched the
nails of his hands into the palms. Five minutes passed—ten—in that
strained, breathless silence, and then Mr Lee sat down once more
and spoke.
‘Well, well,’ he said, ‘I’ve been glad to hear all ye say, an’ to have
this opportunity of knowing more o’ ye; we’ll have occasion to talk
on these things again, an’ I’ll happen be able to make up my mind
next time. I’ve got many calls, ye see, on me just now, but I’ll pay
for the board and lodgin’ as before; an’ ye an’ your sister must come
to me some day, so as we may be learnin’ to know more of each
other. I’ve an engagement, so I’ll wish ye good-day; but if ye stay
for refreshment I’ll have some sent to ye. Good-bye to ye now, an’
many thanks for thy visit; we’ll learn to be acquainted soon, I doubt
—good-bye.’
‘The old snake,’ muttered James Gillan, in a fury, by the window to
which he strode as his uncle left the room; ‘he thinks himself clever,
no doubt, to put me off, and to bind me with promises whilst he
himself is free. At any rate, I need make no alteration now; I
certainly will not give up my plans and hopes for him—a fine thing
indeed it would be to lose the girl I love for the sake of an old
rapscallion who gives words instead of coin!.... And yet if I lost his
favour .... but that is not inevitable .... we will keep things dark for a
while and bide our time; she ought really to consent to a little
secrecy when I have shown myself willing to do so much for her ....
And I shall have her, I shall at least be sure of that; and it may be
that all things will turn out for the best.’ The sound of the opening
door disturbed his meditations; he declined all refreshment, ordered
his horse, and rode away.
That night, a dark night, when all was indistinct, and even the
stars were not brilliant in the sky, and the outlines of trees made dim
and gloomy masses, and the village had closed its blinds and locked
its doors—on that night, whilst the wide meadows lay beneath the
stars, two shadowy figures met in the Thackbusk field. And as they
stood there, with their arms round each other, they whispered to
each other that all was arranged at last.
CHAPTER XVII
A PLEASANT EVENING

ON that same evening, whilst darkness lay on the fields, and in the
dim Thackbusk meadow the two wandering figures met, there were
bright fires and lights and a pleasant sense of welcome within the
closed shutters of the Manor Farm. The grate in the old kitchen was
aglow with flames, there was a bronze lamp on the table, and the
candles on the piano were lit; and by the piano, in her black lace
evening dress, sat Tina, and at intervals she played and sang. Her
weird, sweet voice lent itself to this fitful music, which rose and fell
like the moaning of the wind. For a while she had been silent, and so
had also her companion; and then, suddenly, she broke once more
into song.

‘O where are you going with your love-locks flowing,


On the west wind blowing along this valley track?’
‘The downhill path is easy, come with me an it please ye,
We shall escape the uphill by never turning back.’

‘What is that?’ asked Nat, startled by the sudden cessation from


the dreams and reveries into which he had been plunged. He was
sitting by the fire, with a sheet of cardboard on his knee, and some
paper on which he was tracing patterns for her needle-work. Tina
did not answer at once; she let her fingers wander idly amongst the
chords of the music, which she was playing from memory.
‘How do you like it?’ she asked with a quick movement of her
head, ‘though I need not ask, for I know it is not your style. The
words are by Christina Rossetti, I found them in a book of poems;
and a friend of mine made them into a song for me.’
‘I don’t like it much, miss,’ Nat answered truthfully, for his candour
was not shackled by the restraints of society. He added, expressing
the musical sentiment of his class, ‘I like summat that’s lively, when
the day’s woork be done.’
‘This is lively,’ cried Tina, with perversity, and struck a few chords
on the piano, weird and full; and then jerked her head back to see if
he were listening, before she flung herself into the passion of her
song. Her voice was not of unlimited strength, but in the old kitchen
it sounded powerful.

‘Oh, what is that glides quickly where velvet flowers grow thickly,
Their scent comes rich and sickly?’ ‘A scaled and hooded worm.’
‘Oh, what’s that in the hollow, so pale I quake to follow?’
‘Oh, that’s a thin dead body, which waits the eternal term.’

‘Turn again, O my sweetest,—turn again, false and fleetest:


This beaten way thou beatest, I fear is hell’s own track.’
‘Nay, too steep for hill mounting; nay, too late for cost counting:
This downhill path is easy, but there’s no turning back.’

The dramatic force which appeared inherent in her gave


indescribable expression to the song; she sang the words with a
wild, strange enjoyment, as if she were rejoicing over some ruin she
had caused. For the moment even Nat found himself to be excited to
such a sensation of dread as he had never before experienced; but
the little adventuress had only yielded to a passing impulse; in
another instant she threw back her head and laughed.
‘And how do your patterns get on?’ she asked, coming closer to
him, and bending over him so that her fingers touched his shoulder;
‘I am sure it is good of you to come evening after evening that I
may teach you this stupid work which I cannot bear to do myself.
Oh, my brother leaves me to be lonely every evening; if it were not
for you I should go mad or die.’
She threw herself into a chair on the other side of the hearth, and
with a tired movement clasped her hands above her head, an action
which displayed the curves of her pretty arms, whose beauty did not
require any ornament. Nat stole a glance at her, and then bent his
head that he might go on industriously with his work—he liked to
indulge himself with these fitful glances, and then feel the hot blood
mounting in his face. A lad of seventeen, brought up with austerity,
without much love for the amusements of his kind, and yet swayed
by all the varying, confused emotions which accompany the perilous
age when manhood dawns—it was scarcely possible that he should
not be excited by evenings spent in such strange companionship.
Where was the harm? he had told his mother that he was working
for Miss Gillan, and she had not refused her permission or in any
way hindered him—he was only confused because Miss Gillan was
herself so strange, not like a lady, not like a village-girl, so that the
natural awe which he would have experienced in her presence was
mingled with a sensation of familiarity. He did not ask himself, as an
older man might have done, for what reason she chose to unbend so
much to him; he did not think of inquiring into the future to learn
the result of such companionship. At the moment the wine of life is
at our lips our future head-aches do not concern us much.
And yet, of late, as one half-waked from a dream, poor Nat had
been possessed with an uneasy, haunted feeling, which scarcely,
even now, amounted to compunction, but which still could render
him dissatisfied. He was not indeed able to gauge the skill of the
questions by which Tina drew from him the information she
required; but it had now become often possible for him to wish that
he had not said so much to her. For he had told her about his home
and his mother, his sister’s beauty and the lovers it had won; about
the Squire too, and his friendship with Mr Lee, and the
correspondence Mr Lee maintained with him. It was on this last
subject that Miss Gillan was chiefly interested; and Nat had some
facility for giving her information, for of late he had been much
employed by the Squire, and had continually brought him letters
from the town. The questions of Miss Gillan were so simple, and
appeared so natural, that for a long time the lad had replied to them
carelessly; and it had not occurred to him that, as a servant, he had
no right, even in small matters, to betray his master. That doubt,
however, having once become aroused, would not allow him to be at
peace again; for his mother had trained him to be fastidiously
upright, and his present conduct was at variance with his training.
He could tell himself indeed that he had done no harm, had revealed
no secret that was worthy of the name; but still he was vexed,
uneasy, unsatisfied, and at night tossed restlessly, wakeful and
feverish. And now, this very evening, he had made fresh promises
.... but then he would never make promises again....
He sat by the hearth, with his head bent over the patterns, the
easy work which was all she required from him, in the spacious
kitchen, warm, lighted, brilliant, which had not the dulness, the
sadness of his home. For to-night he would be happy, he would
enjoy himself, in Miss Tina’s room, and in her company; he would
bask in his love of dreams and reveries, in the sense of expanding
faculties and powers. For he was growing older; he was himself
aware of it; in the past few weeks he had known new experiences.
‘Ah! ah! it is late,’ cried Tina, as she sprang from her seat with the
lightness of movement that belonged to her. ‘Your mother will be
angry; you must excuse yourself; you must say that I gave you a
great deal of work to do. And you will remember what you must do
to-morrow, you must just look in here as you come from the town
.... I must have a sight of my sweet uncle’s hand-writing; for,
although I am his niece, I have not often seen it. I won’t ever again
ask you to do such a thing for me; I don’t want you to get into a
scrape, you know .... only just this once .... because I have set my
heart upon it .... because it is an occasion that will never come
again. He is writing to the Squire on business, but he will speak of
my brother’s visit, and I shall know by the look of the envelope the
mood in which he wrote. Oh, Nat, you cannot tell what all this is to
me; it is more than a foolish fear, it is my life.’
The ready tears sprang to her dark, shining eyes, which she veiled
with one hand whilst she held out the other. He had never seen her
in such a mood before, and the sight of her trouble touched him
unspeakably. And then, as she took the hand which he scarcely
dared to raise, she whispered that he was her friend, her only friend.
The words lingered like music in his ears as he went out from the
Farm into the dark village-streets.

The lights of the Farm were still before his eyes when he paused
for an instant on the threshold of his home, listening for the voices
of Annie and his mother, hoping that he would not be obliged to
speak to them. With the remembrance of a pleasant evening, of
Tina’s murmured words, he paused for an instant, then turned the
handle, and went in. And then .... he stood still as his sister had
done once, but with a more startled dismay, a deeper dread.
The cottage was silent, a solitary candle was burning; his mother
sat by it with her head upon her hands, a scrap of writing before her
on the table, her features pallid, her eyes fixed, scared, and dry. The
scrap of writing gave sufficient information; his sister was gone, she
had left the cottage that night—whilst he had been occupied with his
enjoyment she had escaped in the darkness from her home.
CHAPTER XVIII
A TERRIBLE NIGHT

YES—she was gone—there could be no doubt about it—there was no


room for hope, no chance of some mistake—the scrap of paper, with
its single word ‘Good-bye,’ contained enough information to insure a
terrible certainty. She had gone to her room that evening to lie
down, as she said, whilst her mother was occupied with needlework
in her own, and had stolen away so softly, silently, that her mother
had not heard her footsteps on the stairs. To whom she was gone—
if indeed it was to some person she had fled—in what direction, with
what object, remained unknown; some hours must have passed
after her flight had taken place before her mother discovered the
paper she had left. Jenny kept on repeating in a pitiful, helpless tone
that she had sewed downstairs for hour after hour, until she became
‘skeared’ that Annie did not appear, and went to her room, and
found that she was gone. It was pitiful to see the condition of the
mother, crushed and bewildered, without strength enough left for
any other feeling than that Annie, her Annie, had really left her
home. To Nat it was all a sudden, dreadful nightmare, the one
candle in the cottage, the stillness of the night, the single word that
his sister’s hand had left, the white face of his mother, and the
overwhelming sense of shame. It could not be borne; he left his
home and his mother, and with some muttered words about making
inquiries, went out into the darkness.
That was not a night to be forgotten by mother or by son, the
short summer night spent in this new suffering; by Jenny sitting
helplessly in her chair, whilst the dying candle before her sunk and
flickered; by Nat in wanderings as hopeless and as helpless, and in
vain enquiries which revealed to others their disgrace. He questioned
such passers-by as could be found in the streets at midnight; he
roused the inhabitants of one or two cottages; he ran through the
night to the two nearest village-stations, and found his way by the
river to the stations in the town. The hours of the night seemed
short, and yet seemed crowded, too quickly over, and yet long to
endlessness; its shifting scenes, and the faces of those he
questioned, remained with him afterwards as bewildered dreams. By
the grey morning-light that broke above the river, he found his way
back again to his home at last, in some desperate hope that when
he turned the handle of the door he would find that his sister also
had returned. He entered to find everything as he had left it, the
candle burnt out, the cottage dim and silent; his mother in her chair,
pale, sleepless, motionless, and the bit of paper on the table in front
of her. He was worn out; it was all too hard to bear; he sat down
and cried.
By that morning light, breaking over fields and hedges, the men
and boys of the village were starting for their work, whilst gardens
and meadows were drenched with early dew, and tiny pink clouds
were bright above the Fens. Already, as a rumour, the latest piece of
news was passing from mouth to mouth as they paused to join each
other; and as the white light grew clearer in the east, it began to
spread amongst the village homes as well. One thing was clear, so
the village-mothers said, it was not for good that the girl had gone
like that; and those who had accused Mrs Salter and her children of
pride were now at last certain that they would have their
punishment. For there is some consolation attending every sorrow—
to those at least who are not the sufferers.
CHAPTER XIX
NAT AND THE SQUIRE

THE village news, spreading fast, as has been said, was not long in
reaching the mansion of the Squire, the grey house that was
situated upon the hill, with trees around it and the church to the left
of it. It came to this great house of the village with the milk, which
was brought in the early morning by a little village boy, was
discussed over breakfast in the servants’ hall, and was introduced
into the study of the master with the newspaper. The Squire was
interested, and even to a certain extent affected, although the
details of village life did not often concern him much, for he was a
recluse, with literary tastes, who preferred to seclude himself from
the outside world. His servants were not only interested but also
much excited, stirred to pity and even in some degree to triumph,
for they had been jealous of their master’s handsome favourite,
whose sister had become so unhappily distinguished now. The
housekeeper declared that there must be something wrong with the
family, and that for her part ‘she had never no opinion of the lad.’
Still human pity is produced by impulses that are happily often
independent of our opinions, and when Nat appeared at eleven
o’clock as usual, pale, with swollen eyelids, trying hard to hold up his
head, he found himself received with a general compassion, which
would not even disturb him by too many questions on the event.
The housekeeper, indeed, took him apart into her room to ask if he
had heard of his sister, and to express pity for his mother, but no
one would have imagined from her manner how unfavourably she
had spoken of him a little while before. Mrs Cranby was an old
institution in the Squire’s household, a handsome old woman, with a
manner of simple dignity, with a little red shawl on the shoulders of

You might also like