Должен выбрать результат только одного столбца от переменных состояния MySQL

В случаях, где существует много синхронных операций в запросе, CPU может стать горлышком бутылки, даже когда CPU сообщает, чтобы иметь циклы для экономии. Существует только такая многопоточность, которая может произойти. Как количество ядра CPU продолжает увеличиваться, больше Вы будете, вероятно, видеть этот сценарий. О единственной вещи можно сделать, получают более быстрые ядра процессора или изучают, какая оптимизация может быть сделана к запросу/базе данных.

1
задан 11 October 2011 в 17:04
3 ответа

Перейдите в базу данных information_schema и вместо этого выберите из таблицы global_status:

mysql> use information_schema;
Database changed
mysql> select * from global_status where variable_name='aborted_clients';
+-----------------+----------------+
| VARIABLE_NAME   | VARIABLE_VALUE |
+-----------------+----------------+
| ABORTED_CLIENTS | 22             |
+-----------------+----------------+
1 row in set (0.01 sec)

mysql> select variable_value from global_status where variable_name='aborted_clients';
+----------------+
| variable_value |
+----------------+
| 22             |
+----------------+
1 row in set (0.01 sec)

mysql> 
2
ответ дан 3 December 2019 в 18:00
$ mysql -u root -p --skip-column-name -e \
    "show status where variable_name='Aborted_clients';" | awk '{ print $2 }'

Если вы хотите сделать это в сценарии оболочки, поместите файл ~ / .my.cnf в $ HOME со следующим содержимым:

[mysql]
user     = root
password = pa$$w0rd
host     = localhost

Если вы работаете MySQL в Windows, посмотрите gawk :

C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql.exe \
    --skip-column-name -u root -p -e \
    "show status where variable_name='aborted_clients';" | \
        "C:\Program Files(x86)\GnuWin32\bin\awk.exe" "{ print $2 }"
1
ответ дан 3 December 2019 в 18:00

Конечно, вы можете использовать следующее:

C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" > abc.txt

Это отобразит два токена

  • Aborted_clients
  • число

Я не эксперт по Windows, но знаю что-то, что вам придется подражать из Linux.

Вам понадобится команда awk .

C:\> mysql -u... -p... -A -N -e"show global status like 'Aborted_clients'" | awk '{print $2}'

Проблема в том, что awk не существует в пакетном языке Windows или в PowerShell. Однако вот хороший пост в блоге о том, как его эмулировать в Windows PowerShell .

Надеюсь, это поможет.

1
ответ дан 3 December 2019 в 18:00

Теги

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