MySQL5.7SYS系统SCHEMA_MySQL
在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:
MySQL4.1 提供了information_schema 数据字典。从此可以很简单的用SQL语句来检索需要的系统元数据了。
MySQL5.5 提供了performance_schema 性能字典。 但是这个字典比较专业,一般人可能也就看看就不了了之了。
MySQL5.7 提供了 sys系统数据库。 sys数据库里面包含了一系列的存储过程、自定义函数以及视图来帮助我们快速的了解系统的元数据信息。
sys系统数据库结合了information_schema和performance_schema的相关数据,让我们更加容易的检索元数据。 现在呢,我就示范下几种场景下如何快速的使用。
第一,
比如之前想要知道某个表是否存在与否,可以用以下两种方法:
A, 悲观的方法,写SQL从information_schema中拿信息:
mysql> SELECT IF(COUNT(*) = 0,'Not exists!','Exists!') AS 'result' FROM information_schema.tables WHERE table_schema = 'new_feature' AND table_name = 't1'; +-------------+ | result | +-------------+ | Not exists! | +-------------+ 1 row in set (0.00 sec)
B,乐观的方法,假设表存在,写一个存储过程:
DELIMITER $$ USE `new_feature`$$ DROP PROCEDURE IF EXISTS `sp_table_exists`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_table_exists`( IN db_name VARCHAR(64), IN tb_name VARCHAR(64), OUT is_exists VARCHAR(60) ) BEGIN DECLARE no_such_table CONDITION FOR 1146; DECLARE EXIT HANDLER FOR no_such_table BEGIN SET is_exists = 'Not exists!'; END; SET @stmt = CONCAT('select 1 from ',db_name,'.',tb_name); PREPARE s1 FROM @stmt; EXECUTE s1; DEALLOCATE PREPARE s1; SET is_exists = 'Exists!'; END$$ DELIMITER ;
现在来调用:
mysql> call sp_table_exists('new_feature','t1',@result); Query OK, 0 rows affected (0.00 sec) mysql> select @result; +-------------+ | @result | +-------------+ | Not exists! | +-------------+ 1 row in set (0.00 sec)
现在我们直接用sys数据库里面现有的存储过程来进行调用,
mysql> CALL table_exists('new_feature','t1',@v_is_exists); Query OK, 0 rows affected (0.00 sec) mysql> SELECT IF(@v_is_exists = '','Not exists!',@v_is_exists) AS 'result'; +-------------+ | result | +-------------+ | Not exists! | +-------------+ 1 row in set (0.00 sec)
第二,获取没有使用过的索引。
mysql> SELECT * FROM schema_unused_indexes; +---------------+-------------+--------------+ | object_schema | object_name | index_name | +---------------+-------------+--------------+ | new_feature | t1 | idx_log_time | | new_feature | t1 | idx_rank2 | +---------------+-------------+--------------+ 2 rows in set (0.00 sec)
第三, 检索指定数据库下面的表扫描信息,过滤出执行次数大于10的查询,
mysql> SELECT * FROM statement_analysis WHERE db='new_feature' AND full_scan = '*' AND exec_count > 10\G *************************** 1. row *************************** query: SHOW STATUS db: new_feature full_scan: * exec_count: 26 err_count: 0 warn_count: 0 total_latency: 74.68 ms max_latency: 3.86 ms avg_latency: 2.87 ms lock_latency: 4.50 ms rows_sent: 9594 rows_sent_avg: 369 rows_examined: 9594 rows_examined_avg: 369 rows_affected: 0 rows_affected_avg: 0 tmp_tables: 0 tmp_disk_tables: 0 rows_sorted: 0 sort_merge_passes: 0 digest: 475fa3ad9d4a846cfa96441050fc9787 first_seen: 2015-11-16 10:51:17 last_seen: 2015-11-16 11:28:13 *************************** 2. row *************************** query: SELECT `state` , `round` ( SUM ... uration (summed) in sec` DESC db: new_feature full_scan: * exec_count: 12 err_count: 0 warn_count: 12 total_latency: 16.43 ms max_latency: 2.39 ms avg_latency: 1.37 ms lock_latency: 3.54 ms rows_sent: 140 rows_sent_avg: 12 rows_examined: 852 rows_examined_avg: 71 rows_affected: 0 rows_affected_avg: 0 tmp_tables: 24 tmp_disk_tables: 0 rows_sorted: 140 sort_merge_passes: 0 digest: 538e506ee0075e040b076f810ccb5f5c first_seen: 2015-11-16 10:51:17 last_seen: 2015-11-16 11:28:13 2 rows in set (0.01 sec)
第四, 同样继续上面的,过滤出有临时表的查询,
mysql> SELECT * FROM statement_analysis WHERE db='new_feature' AND tmp_tables > 0 ORDER BY tmp_tables DESC LIMIT 1\G *************************** 1. row *************************** query: SELECT `performance_schema` . ... name` . `SUM_TIMER_WAIT` DESC db: new_feature full_scan: * exec_count: 2 err_count: 0 warn_count: 0 total_latency: 87.96 ms max_latency: 59.50 ms avg_latency: 43.98 ms lock_latency: 548.00 us rows_sent: 101 rows_sent_avg: 51 rows_examined: 201 rows_examined_avg: 101 rows_affected: 0 rows_affected_avg: 0 tmp_tables: 332 tmp_disk_tables: 15 rows_sorted: 0 sort_merge_passes: 0 digest: ff9bdfb7cf3f44b2da4c52dcde7a7352 first_seen: 2015-11-16 10:24:42 last_seen: 2015-11-16 10:24:42 1 row in set (0.01 sec)
可以看到上面查询详细的详细,再也不用执行show status 手工去过滤了。
第五, 检索执行次数排名前五的语句,
mysql>SELECT statement,total FROM user_summary_by_statement_type WHERE `user`='root' ORDER BY total DESC LIMIT 5; +-------------------+-------+ | statement | total | +-------------------+-------+ | jump_if_not | 17635 | | freturn | 3120 | | show_create_table | 289 | | Field List | 202 | | set_option | 190 | +-------------------+-------+ 5 rows in set (0.01 sec)
示例我就写这么多了,详细的去看使用手册并且自己摸索去吧。
以上就是MySQL5.7SYS系统SCHEMA_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Les capacités de recherche en texte intégral d'InNODB sont très puissantes, ce qui peut considérablement améliorer l'efficacité de la requête de la base de données et la capacité de traiter de grandes quantités de données de texte. 1) INNODB implémente la recherche de texte intégral via l'indexation inversée, prenant en charge les requêtes de recherche de base et avancées. 2) Utilisez la correspondance et contre les mots clés pour rechercher, prendre en charge le mode booléen et la recherche de phrases. 3) Les méthodes d'optimisation incluent l'utilisation de la technologie de segmentation des mots, la reconstruction périodique des index et l'ajustement de la taille du cache pour améliorer les performances et la précision.

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

La différence entre l'index cluster et l'index non cluster est: 1. Index en cluster stocke les lignes de données dans la structure d'index, ce qui convient à la requête par clé et plage primaire. 2. L'index non clumpant stocke les valeurs de clé d'index et les pointeurs vers les lignes de données, et convient aux requêtes de colonne de clés non primaires.

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Dans la base de données MySQL, la relation entre l'utilisateur et la base de données est définie par les autorisations et les tables. L'utilisateur a un nom d'utilisateur et un mot de passe pour accéder à la base de données. Les autorisations sont accordées par la commande Grant, tandis que le tableau est créé par la commande Create Table. Pour établir une relation entre un utilisateur et une base de données, vous devez créer une base de données, créer un utilisateur, puis accorder des autorisations.
