Управление гигантским MySQL выводит файлы

https://dev.mysql.com/doc/refman/8.0/en/innodb-buffer-page-table.html говорит:

TABLE_NAME [115 ]

Название таблицы, к которой принадлежит страница. Этот столбец применим только к страницам со значением PAGE_TYPE, равным INDEX.

blockquote>

То же самое относится к столбцу INDEX_NAME.

Попробуйте этот запрос, чтобы получить больше информации:

select page_type, page_state, table_name, index_name, 
  count(*) as Page_Count, sum(data_size)/1024/1024 as Size_in_MB 
from information_schema.innodb_buffer_page 
group by page_type, page_state, table_name, index_name 
order by Size_in_MB desc;

Я вижу на вашем снимке экрана, что многие страницы пула буферов типа INDEX по-прежнему показывают NULL для имен таблиц и индексов. [ 119] 1110 Я не уверен, что это значит. Я посмотрел исходный код MySQL, и кажется, что он может оставить эти значения как NULL, если не может найти индекс в словаре данных InnoDB. Но я не уверен, как это могло произойти.

https://github.com/mysql/mysql-server/blob/5.6/storage/innobase/handler/i_s.cc#L5007


Комментарий от @C GK:

Да, вы правы, я проверил, и я вижу разницу. Я полагаю, что разница показывает коэффициент заполнения страниц.

select page_type, page_state, table_name, index_name,
  count(*) as Page_Count,
  count(*) * @@innodb_page_size /1024/1024 AS Total_Page_Size_in_MB,
  sum(data_size)/1024/1024 as Size_in_MB
from information_schema.innodb_buffer_page  
group by page_type, page_state, table_name, index_name
order by Size_in_MB desc

+-------------------+------------+--------------+------------+------------+-----------------------+-------------+
| page_type         | page_state | table_name   | index_name | Page_Count | Total_Page_Size_in_MB | Size_in_MB  |
+-------------------+------------+--------------+------------+------------+-----------------------+-------------+
| INDEX             | FILE_PAGE  | `test`.`foo` | PRIMARY    |       1940 |           30.31250000 | 27.87315369 |

5
задан deadprogrammer 12 November 2008 в 17:24
поделиться

4 ответа

Когда я должен вытянуть единственную таблицу от дампа sql, я использую комбинацию grep, головы и хвоста.

Например:

grep -n "CREATE TABLE" dump.sql

Это затем дает Вам номера строки для каждого, поэтому если Ваша таблица находится на строке 200 и та после того, как находится на строке 269, я делаю:

head -n 268 dump.sql > tophalf.sql
tail -n 69 tophalf.sql > yourtable.sql

Я предположил бы, что Вы могли расшириться на те принципы для поднимания сценария, который разделит все это вниз на один файл на таблицу.

Кто-либо хочет движение, делающее его здесь?

Другой бит, который мог бы помочь запустить движение цикла удара:

grep -n "CREATE TABLE " dump.sql  | tr ':`(' '  ' | awk '{print $1, $4}'

Это дает Вам хороший список номеров строки и имен таблиц как:

200 FooTable
269 BarTable
11
ответ дан 18 December 2019 в 06:13
поделиться

Сохраните себя много стычки и использования mysqldump -T если Вы можете.

Из документации:

- tab=path,-T путь

Произведите разделенные от вкладки файлы данных. Для каждой выведенной таблицы mysqldump создает tbl_name.sql файл, который содержит оператор CREATE TABLE, который составляет таблицу и файл tbl_name.txt, который содержит его данные. Значение опции является каталогом, в котором можно записать файлы.

По умолчанию .txt файлы данных отформатированы с помощью символов табуляции между значениями столбцов и новой строкой в конце каждой строки. Формат может быть указан явно с помощью - поля-xxx и - lines-terminated-by опции.

Примечание:
Эта опция должна использоваться только, когда mysqldump выполняется на той же машине как mysqld сервер. У Вас должно быть полномочие ФАЙЛА, и сервер должен иметь разрешение записать файлы в каталоге, который Вы указываете.

9
ответ дан 18 December 2019 в 06:13
поделиться

Maatkit seems quite appropriate for this with mk-parallel-dump and mk-parallel-restore.

2
ответ дан 18 December 2019 в 06:13
поделиться

Для меня банковский счет имеет набор корректировок. Банковский счет не является сбором корректировок, потому что он «гораздо» больше того: он также «является» именем и типом и т. д.

Так что, в вашем случае (и подобных случаях), я предлагаю вам агрегировать коллекцию внутри вашего класса.

В случае сомнений, избегайте наследования.: -)

Я могу аргументировать это дальше. Для правильного использования наследования подкласс должен удовлетворять принципу замещения Лискова ; это означает, что в вашем случае BankAccount должен быть допустимым типом в любом месте, где ожидается Инкассо . Я не думаю, что это так, потому что Коллекция , вероятно, предоставляет такие методы, как Добавить () и Удалить () , в то время как вы хотите иметь некоторый контроль над добавлением и удалением корректировок с вашего банковского счета, а не позволять людям добавлять и удалять их свободно.

-121--4716386-

Далее: http://html2haml.heroku.com/

EDIT: Moved to https://html2haml.herokuapp.com/

-121--1093562-

Этот сценарий оболочки захватит нужные таблицы и передаст их в splitted.sql .

Он способен понимать регулярные выражения, так как я добавил опцию sed -r .

Кроме того, MyDumpSplitter может разделить дамп на отдельные отвалы таблицы.

4
ответ дан 18 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: