Heim Datenbank MySQL-Tutorial [原创]数据表的水平拆分(1) 初探分库分表

[原创]数据表的水平拆分(1) 初探分库分表

Jun 07, 2016 pm 04:32 PM
分库 分表 初探 原创 拆分 数据表 水平

当一个数据表数据量非常大的时候,查询会变得非常慢。 一般来说MySQL达到千万条以后(视情况而定,查询较少的表可能会稍好一点), 所以就要尝试分库分表, 就是所谓的数据库水平拆分。 水平拆分最重要的一点是按照什么 分表 .先不说理论,先看下边实例 用户

          当一个数据表数据量非常大的时候,查询会变得非常慢。 一般来说MySQL达到千万条以后(视情况而定,查询较少的表可能会稍好一点), 所以就要尝试分库分表, 就是所谓的数据库水平拆分。
水平拆分最重要的一点是按照什么分表. 先不说理论,先看下边实例

用户表 user( uname-用户名,唯一 upwd- 密码 unickname-昵称)
用户信息表 user_info (uname-用户名,外键 tel-电话 email-邮箱 ......)

          假设我们有好多好多数据, 有可能上亿条,甚至十亿 百亿(绝对是史上最大的用户表了),我们怎么分这个数据表?
          按照什么分表? 当然 uname 是最佳的选择。 不为什么,就因为我们查询的时候最有可能用到这个字段做为唯一查询条件: select * from user where uname='XXX';
          方案1:
                按照用户名的最后两位来分表。用户名 hello 的用户就存在 user_lo 里边 , 用户名是world 的就存在 user_ld 里, 这样做的好处是:
                       1. 按照用户名有这样一个散列规则,如果知道用户名的话, 经过我们的散列规则算法一下就确定了数据保存在那张数据表中, 不需要再搜索
                       2. 数据表中的数据也基本的平均, 理论上边每个组合的用户名后两位是平均分布的(事实上是有差别的, 如果是自增的数字ID的话是基本上平均的),达到了我们分库分表的初衷
                但是这种算法也是有缺点的:
                      1. 数据表的组合从user_aa 到 user_zz (假如全由字母组成, 不区分大小写), 有 26*26张数据表, 数据表个数是固定的, 如果后期发现有些数据表的数据又比较多了, 要扩展的话就比较难了。
                      2. 统计起来比较困难。 要查询某一个时间段注册的用户, 这样的就比较困难了,这样的话就必须查询每一张数据表然后把结果合并起来。

             再来看另外一个例子: 订单。 大家可以发现京东上边是这样做的, 京东上边默认查询的是当月的订单, 然后所有的订单是另外查询的(卓越亚马逊等其他网站也有好多这么做的)。他们的分表应该是这样的, 数据肯定是要按月分的,你所有的订单他就让你再点一下才可以查到。我们模拟一下:
             因为用户只能查到自己的订单, 所以按照用户分表还是必要的, 对于京东来说,按照用户来分还不足以应付这么多的数据量, 所以我们就用一个更复杂一点的散列规则, 按照用户名和日期组合分表:
             order_date_name date 表示日期, name 表示用户名的后两位, 比如我这个月订单的数据表就存在 order_201103_ng, 根据我的名字 查询我当月的订单就去这帐数据表中查询, 查询我的所有订单就去 show tables like 'order_%_ng'; 我把的名字后缀的表先取出来, 然后再去 查询这些数据表, 最后合并结果。
             当然你可能会问, 后台统计的时候是不是太麻烦了, 我可以很负责地告诉你: 是! 这个没办法, 后台取统计数据的话可以延迟个几分钟, 老板不会说你, 但是如果让前台用户等级分钟老板绝对饶不了你!
             总之数据拆分的精髓就在于,根据实际情况将数据按照最合适的规则存储在不同的数据表中,尽量避免多个数据表的数据合并
             更多数据拆分的东西我们以后再讨论, 敬请继续关注我的博客,谢谢!

声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权

转载请注明来源:小景的博客

本文链接地址:http://www.phpv5.com/blog/archives/109/

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schneller Einstieg: Techniken zum Zusammenführen und Aufteilen von JSON-Arrays in Java. Schneller Einstieg: Techniken zum Zusammenführen und Aufteilen von JSON-Arrays in Java. Sep 06, 2023 am 10:21 AM

Schneller Einstieg: JSON-Array-Zusammenführungs- und Aufteilungstechniken in Java In der modernen Softwareentwicklung sind Datenformat und -übertragung immer wichtiger geworden. Unter diesen ist JSON (JavaScriptObjectNotation) ein häufig verwendetes Datenformat, das sich besonders für Front-End- und Back-End-Interaktion und Datenspeicherung eignet. In der Java-Entwicklung müssen wir uns häufig mit JSON-Objekten und JSON-Arrays befassen. In diesem Artikel wird erläutert, wie Sie JSON-Arrays in Java zusammenführen und aufteilen, sowie Tipps und Beispiele für die Implementierung dieser Vorgänge.

Wie ist die Leistung der 3060-Grafikkarte? Wie ist die Leistung der 3060-Grafikkarte? Jan 27, 2024 am 10:36 AM

Viele Gamer sind sehr neugierig auf die Grafikkarte 3060 und möchten ein 3060-Display kaufen, wissen aber nicht, auf welchem ​​Niveau sich die RTX 3060 befindet. Tatsächlich liegt diese Grafikkarte auch auf einem relativ Mainstream-Niveau. Was ist das Niveau der 3060-Grafikkarte: Antwort: Mainstream-Niveau. Diese RTX3060-Grafikkarte erfreut sich bei Spielern großer Beliebtheit und ist ebenfalls im Angebot. Sie verfügt über die einzigartigen Vorteile der RTX30-Serie und ist sehr kostengünstig. Spieler mit höheren Anforderungen an die Spielgrafik können sich für diese Grafikkarte entscheiden. Einführung zur 3060-Grafikkartenerweiterung: Bildrate: Sie wird von den meisten Spielern geliebt. Sie verfügt über einen großen Videospeicher von 12 GB und ist sehr beliebt. Mit 12 GB großem Videospeicher können AAA-Meisterwerke flüssig und ohne Verzögerung wiedergegeben werden, und die Bildrate kann sogar 60 erreichen. Preis-Leistungs-Verhältnis: it

Erste Schritte mit Java-Crawlern: Verstehen Sie die grundlegenden Konzepte und Anwendungsmethoden Erste Schritte mit Java-Crawlern: Verstehen Sie die grundlegenden Konzepte und Anwendungsmethoden Jan 10, 2024 pm 07:42 PM

Eine vorläufige Studie zu Java-Crawlern: Um seine grundlegenden Konzepte und Verwendungsmöglichkeiten zu verstehen, sind spezifische Codebeispiele erforderlich. Mit der rasanten Entwicklung des Internets ist die Beschaffung und Verarbeitung großer Datenmengen für Unternehmen und Einzelpersonen zu einer unverzichtbaren Aufgabe geworden. Als automatisierte Datenerfassungsmethode kann Crawler (WebScraping) nicht nur schnell Daten im Internet sammeln, sondern auch große Datenmengen analysieren und verarbeiten. Crawler sind in vielen Data-Mining- und Information-Retrieval-Projekten zu einem sehr wichtigen Werkzeug geworden. In diesem Artikel wird ein grundlegender Überblick über Java-Crawler gegeben

Wie verwende ich PHP ZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Wie verwende ich PHP ZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Jul 21, 2023 am 10:17 AM

Wie verwende ich PHPZipArchive, um mehrere komprimierte Pakete zusammenzuführen und aufzuteilen? Überblick: Während des Entwicklungsprozesses müssen wir manchmal mehrere komprimierte Pakete zu einem zusammenführen oder ein komprimiertes Paket in mehrere aufteilen. PHP bietet die ZipArchive-Erweiterung, um diese Vorgänge einfach durchzuführen. In diesem Artikel wird erläutert, wie Sie mit PHPZipArchive mehrere komprimierte Pakete zusammenführen und aufteilen. Mehrere Archive zusammenführen Zuerst müssen wir ein neues Archiv erstellen und es öffnen. Dann muss die Schleife durchlaufen werden

Datentabellenkomprimierungstechnologie in MySQL Datentabellenkomprimierungstechnologie in MySQL Jun 16, 2023 am 08:16 AM

MySQL ist eine gängige relationale Datenbank, die eine Kernkomponente vieler Websites und Anwendungen darstellt. Da die Datenmenge immer größer wird, wird es besonders wichtig, die Leistung von MySQL zu optimieren. Einer der Schlüsselbereiche ist die Komprimierung von Datentabellen. In diesem Artikel stellen wir die Datentabellenkomprimierungstechnologie in MySQL vor. Komprimierte Tabellen und nicht komprimierte Tabellen In MySQL gibt es zwei Arten von Datentabellen: komprimierte Tabellen und nicht komprimierte Tabellen. Unkomprimierte Tabellen sind der Standardtabellentyp von MySQL, der zum Speichern von Daten ein Zeilenformat mit fester Länge verwendet. Das bedeutet Daten

Top 10 Global Digital Virtual Currency Trading Platform Ranking (2025 Autoritative Ranking) Top 10 Global Digital Virtual Currency Trading Platform Ranking (2025 Autoritative Ranking) Mar 06, 2025 pm 04:36 PM

Im Jahr 2025 sind globale digitale Handelsplattformen für virtuelle Währungen sehr wettbewerbsfähig. OKX steht an erster Stelle mit seiner starken technischen Stärke und globalen Betriebsstrategie, und Binance folgt eng mit hoher Liquidität und niedrigen Gebühren. Plattformen wie Gate.io, Coinbase und Kraken stehen mit ihren jeweiligen Vorteilen im Vordergrund. Die Liste umfasst Handelsplattformen wie Huobi, Kucoin, Bitfinex, Crypto.com und Gemini, die jeweils eigene Eigenschaften haben, aber Investitionen sollten vorsichtig sein. Um eine Plattform auszuwählen, müssen Sie Faktoren wie Sicherheit, Liquidität, Gebühren, Benutzererfahrung, Währungsauswahl und Vorschriften für die behördliche Regulierung berücksichtigen und rational investieren

Mar 18, 2024 pm 03:21 PM

Als neuer Star auf dem Mobiltelefonmarkt hat das Kirin 9000s in diesem Jahr viel Aufmerksamkeit auf sich gezogen. Da der Wettbewerb auf dem Smartphone-Markt immer härter wird, hat die Kirin-Serie als Flaggschiff-Prozessor von Huawei schon immer viel Aufmerksamkeit auf sich gezogen. Wie ist die Leistung und das Niveau des Kirin 9000 als neuester Prozessor? Im Folgenden wird der Kirin 9000 bewertet und seine Vor- und Nachteile unter verschiedenen Gesichtspunkten analysiert. Was zunächst die Leistung betrifft, wird der Kirin 9000s in einem fortschrittlichen 5-nm-Prozess hergestellt und integriert die neueste Co. von ARM

Gilt das geänderte MD5 als Originalinhalt? Gilt das geänderte MD5 als Originalinhalt? Feb 19, 2024 pm 08:04 PM

Gilt es nach der Änderung von md5 als originell? Im Internetzeitalter ist die Erstellung von Originalinhalten zu einem wichtigen Wert und einer wichtigen Ressource geworden. Was jedoch folgt, ist die Infragestellung der Originalität und der Rechtsverletzung. Um Piraterie und Plagiate vorzubeugen, versuchen viele Menschen, ihre Originalwerke mit unterschiedlichen Methoden zu schützen. Eine der am häufigsten verwendeten Methoden ist die Verwendung des MD5-Algorithmus zur Änderung der Arbeit, um den Effekt des „Algorithmusschutzes“ zu erzielen. MD5 (MessageDigestAlgorithm5) ist ein häufig verwendeter Message-Digest-Algorithmus, der dies kann

See all articles