Maison base de données tutoriel mysql 第一次操刀数据库分表的教训与经验--白干一场

第一次操刀数据库分表的教训与经验--白干一场

Jun 07, 2016 pm 05:37 PM
分表 leçon 数据库 经验

做完了分表之后,数据库里面的表从8张变成了8000张,我以为谷歌的抓取速度会降低为原来的一半,于是每天看一次谷歌抓取速度,结果实在是太失望了 结果发现,分完表之后谷歌抓取等待的时间迅速上升了,对mysql不是很了解,查了一下mysql的一些配置信息,我的

做完了分表之后,数据库里面的表从8张变成了8000张,,我以为谷歌的抓取速度会降低为原来的一半,于是每天看一次谷歌抓取速度,结果实在是太失望了

image

结果发现,分完表之后谷歌抓取等待的时间迅速上升了,对mysql不是很了解,查了一下mysql的一些配置信息,我的数据库默认是innodb,

结果发现innodb默认是把所有的表放在一个文件里面,无论这个数据库里面有多少张表,也想起来sqlserver默认也是吧所有的表放在一个文件里面,

sqlserver分表的时候自己可以新添加文件组,查了下mysql的配置,mysql 有这么个配置Innodb_file_per_table,不过设置完后必须从新导入一次数据,以后安装mysql得先看看Innodb_file_per_table的配置,以免自增麻烦。

我以为这样就好了,但是看谷歌抓取时候监控宝的监控记录,发现cpu还是和以前一样高

image

cpu高是因为什么呢?

是因为我分表造成的?

1:查看mysql 在win下的设置,说一台服务器上的文件句柄数最大为2048个,是不是我分的太多表造成(8000张。。)?-----经验欠缺,先这么着吧

2:会不会是因为我读取问题列表时候,吧问题的全部内容读取出来了,造成并发高时候,io忙,cpu很忙碌?-------这个有办法加个简介字段

3:会不会是因为我读取出来内容用正则表达式过滤html,传说正则表达式是高并发下的cpu杀手?--------------这个有办法加个简介字段、过滤html

给1000张表加字段的问题用博客园园友的分表工具,很轻松就搞定了,

原来是select * 换成 select 部分字段 PetaPoco 很容易就搞定了

以前是这么写的

Page result = learnDAL.learnDB.GetInstance().Page(page, itemsPerPage, @"select * from question_home order by addtime desc ", "");

                                    

现在这么写

Page result = learnDAL.learnDB.GetInstance().Page(page, itemsPerPage, PetaPoco.Sql.Builder.Select(@" title, titlecode, Brief as content, userid, siteid, tagids, havegoodanswer, addtime, tags").From("question_home").OrderBy("addtime desc ")

发现PetaPoco这种开源的小工具果然是小巧玲珑好掌握

做完之后上线做个压力测试对比下

【周五做的50并发和cpu观测】---ps:这个在线并发测试工具,只能免费使用几次,哎。。。。。。。

image

image

周六修改完之后

100个并发和cpu【ps:最后几个免费金币】

image

image

发现读取列表时候不读取大字段,和不做正则表达式过滤,cpu立马平稳了,

这次分表完全是白干了一场,还不知道一个mysql库里面放8000张表在win2003下是不是合理,是不是很糟糕,

求路过的大神指点一下 mysql和sqlserver,在一个数据库库里面放多少张表是合理的?

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Mar 27, 2024 pm 09:39 PM

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

Comment Hibernate implémente-t-il le mappage polymorphe ? Comment Hibernate implémente-t-il le mappage polymorphe ? Apr 17, 2024 pm 12:09 PM

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Une analyse approfondie de la façon dont HTML lit la base de données Une analyse approfondie de la façon dont HTML lit la base de données Apr 09, 2024 pm 12:36 PM

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Comment gérer les erreurs de connexion à la base de données en PHP Comment gérer les erreurs de connexion à la base de données en PHP Jun 05, 2024 pm 02:16 PM

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Mar 27, 2024 pm 05:21 PM

PHP est un langage de programmation back-end largement utilisé dans le développement de sites Web. Il possède de puissantes fonctions d'exploitation de bases de données et est souvent utilisé pour interagir avec des bases de données telles que MySQL. Cependant, en raison de la complexité du codage des caractères chinois, des problèmes surviennent souvent lorsqu'il s'agit de caractères chinois tronqués dans la base de données. Cet article présentera les compétences et les pratiques de PHP dans la gestion des caractères chinois tronqués dans les bases de données, y compris les causes courantes des caractères tronqués, les solutions et des exemples de code spécifiques. Les raisons courantes pour lesquelles les caractères sont tronqués sont des paramètres de jeu de caractères incorrects dans la base de données : le jeu de caractères correct doit être sélectionné lors de la création de la base de données, comme utf8 ou u.

Comment utiliser les fonctions de rappel de base de données dans Golang ? Comment utiliser les fonctions de rappel de base de données dans Golang ? Jun 03, 2024 pm 02:20 PM

L'utilisation de la fonction de rappel de base de données dans Golang peut permettre : d'exécuter du code personnalisé une fois l'opération de base de données spécifiée terminée. Ajoutez un comportement personnalisé via des fonctions distinctes sans écrire de code supplémentaire. Des fonctions de rappel sont disponibles pour les opérations d'insertion, de mise à jour, de suppression et de requête. Vous devez utiliser la fonction sql.Exec, sql.QueryRow ou sql.Query pour utiliser la fonction de rappel.

See all articles