婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作實(shí)例詳解

MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作實(shí)例詳解

熱門(mén)標(biāo)簽:外呼系統(tǒng)電銷(xiāo)受騙 萊西市地圖標(biāo)注 銷(xiāo)售語(yǔ)音電話機(jī)器人 在哪里申請(qǐng)400電話 安徽ai電話電銷(xiāo)機(jī)器人有效果嗎 走過(guò)哪個(gè)省地圖標(biāo)注 常州網(wǎng)絡(luò)外呼系統(tǒng)開(kāi)發(fā) 400電話申請(qǐng)信用卡 巫師三血與酒地圖標(biāo)注

本文實(shí)例講述了MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作。分享給大家供大家參考,具體如下:

分表分庫(kù)

垂直拆分

垂直拆分就是要把表按模塊劃分到不同數(shù)據(jù)庫(kù)表中(當(dāng)然原則還是不破壞第三范式),這種拆分在大型網(wǎng)站的演變過(guò)程中是很常見(jiàn)的。當(dāng)一個(gè)網(wǎng)站還在很小的時(shí)候,只有小量的人來(lái)開(kāi)發(fā)和維護(hù),各模塊和表都在一起,當(dāng)網(wǎng)站不斷豐富和壯大的時(shí)候,也會(huì)變成多個(gè)子系統(tǒng)來(lái)支撐,這時(shí)就有按模塊和功能把表劃分出來(lái)的需求。其實(shí),相對(duì)于垂直切分更進(jìn)一步的是服務(wù)化改造,說(shuō)得簡(jiǎn)單就是要把原來(lái)強(qiáng)耦合的系統(tǒng)拆分成多個(gè)弱耦合的服務(wù),通過(guò)服務(wù)間的調(diào)用來(lái)滿足業(yè)務(wù)需求看,因此表拆出來(lái)后要通過(guò)服務(wù)的形式暴露出去,而不是直接調(diào)用不同模塊的表,淘寶在架構(gòu)不斷演變過(guò)程,最重要的一環(huán)就是服務(wù)化改造,把用戶、交易、店鋪、寶貝這些核心的概念抽取成獨(dú)立的服務(wù),也非常有利于進(jìn)行局部的優(yōu)化和治理,保障核心模塊的穩(wěn)定性
垂直拆分用于分布式場(chǎng)景。

水平拆分

上面談到垂直切分只是把表按模塊劃分到不同數(shù)據(jù)庫(kù),但沒(méi)有解決單表大數(shù)據(jù)量的問(wèn)題,而水平切分就是要把一個(gè)表按照某種規(guī)則把數(shù)據(jù)劃分到不同表或數(shù)據(jù)庫(kù)里。例如像計(jì)費(fèi)系統(tǒng),通過(guò)按時(shí)間來(lái)劃分表就比較合適,因?yàn)橄到y(tǒng)都是處理某一時(shí)間段的數(shù)據(jù)。而像SaaS應(yīng)用,通過(guò)按用戶維度來(lái)劃分?jǐn)?shù)據(jù)比較合適,因?yàn)橛脩襞c用戶之間的隔離的,一般不存在處理多個(gè)用戶數(shù)據(jù)的情況,簡(jiǎn)單的按user_id范圍來(lái)水平切分
通俗理解:水平拆分行,行數(shù)據(jù)拆分到不同表中, 垂直拆分列,表數(shù)據(jù)拆分到不同表中

水平分割案例

思路:在大型電商系統(tǒng)中,每天的會(huì)員人數(shù)不斷的增加。達(dá)到一定瓶頸后如何優(yōu)化查詢。
可能大家會(huì)想到索引,萬(wàn)一用戶量達(dá)到上億級(jí)別,如何進(jìn)行優(yōu)化呢?
使用水平分割拆分?jǐn)?shù)據(jù)庫(kù)表。

如何使用水平拆分?jǐn)?shù)據(jù)庫(kù)

使用水平分割拆分表,具體根據(jù)業(yè)務(wù)需求,有的按照注冊(cè)時(shí)間、取摸、賬號(hào)規(guī)則、年份等。

使用取摸方式分表

首先我創(chuàng)建三張表 user0 / user1 /user2 , 然后我再創(chuàng)建 uuid表,該表的作用就是提供自增的id。

create table user0(
id int unsigned primary key ,
name varchar(32) not null default '',
pwd varchar(32) not null default '')
engine=myisam charset utf8;
create table user1(
id int unsigned primary key ,
name varchar(32) not null default '',
pwd varchar(32) not null default '')
engine=myisam charset utf8;
create table user2(
id int unsigned primary key ,
name varchar(32) not null default '',
pwd varchar(32) not null default '')
engine=myisam charset utf8;
create table uuid(
id int unsigned primary key auto_increment)engine=myisam charset utf8;

創(chuàng)建一個(gè)demo項(xiàng)目

POM文件

    parent>
        groupId>org.springframework.boot/groupId>
        artifactId>spring-boot-starter-parent/artifactId>
        version>1.3.3.RELEASE/version>
    /parent>
    dependencies>
        dependency>
            groupId>org.springframework.boot/groupId>
            artifactId>spring-boot-starter-jdbc/artifactId>
        /dependency>
        dependency>
            groupId>org.springframework.boot/groupId>
            artifactId>spring-boot-starter/artifactId>
        /dependency>
        dependency>
            groupId>org.springframework.boot/groupId>
            artifactId>spring-boot-starter-test/artifactId>
            scope>test/scope>
        /dependency>
        dependency>
            groupId>mysql/groupId>
            artifactId>mysql-connector-java/artifactId>
        /dependency>
        dependency>
            groupId>org.springframework.boot/groupId>
            artifactId>spring-boot-starter-web/artifactId>
        /dependency>
    /dependencies>

Service代碼

@Service
public class UserService {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public String regit(String name, String pwd) {
        // 1.先獲取到 自定增長(zhǎng)ID
        String idInsertSQL = "INSERT INTO uuid VALUES (NULL);";
        jdbcTemplate.update(idInsertSQL);
        Long insertId = jdbcTemplate.queryForObject("select last_insert_id()", Long.class);
        // 2.判斷存儲(chǔ)表名稱
        String tableName = "user" + insertId % 3;
        // 3.注冊(cè)數(shù)據(jù)
        String insertUserSql = "INSERT INTO " + tableName + " VALUES ('" + insertId + "','" + name + "','" + pwd
                + "');";
        System.out.println("insertUserSql:" + insertUserSql);
        jdbcTemplate.update(insertUserSql);
        return "success";
    }
    public String get(Long id) {
        String tableName = "user" + id % 3;
        String sql = "select name from " + tableName + " where id="+id;
        System.out.println("SQL:" + sql);
        String name = jdbcTemplate.queryForObject(sql, String.class);
        return name;
    }
}

Controller

@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/regit")
    public String regit(String name, String pwd) {
        return userService.regit(name, pwd);
    }
    @RequestMapping("/get")
    public String get(Long id) {
        String name = userService.get(id);
        return name;
    }
}

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

您可能感興趣的文章:
  • 簡(jiǎn)單了解MySQL數(shù)據(jù)庫(kù)優(yōu)化技巧
  • 簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化之索引實(shí)現(xiàn)原理與用法分析
  • 詳解MySQL數(shù)據(jù)庫(kù)優(yōu)化的八種方式(經(jīng)典必看)
  • mysql 單機(jī)數(shù)據(jù)庫(kù)優(yōu)化的一些實(shí)踐
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化技術(shù)之索引使用技巧總結(jié)
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化技術(shù)之配置技巧總結(jié)
  • 運(yùn)維角度淺談MySQL數(shù)據(jù)庫(kù)優(yōu)化(李振良)
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化詳解
  • 9種 MySQL數(shù)據(jù)庫(kù)優(yōu)化的技巧

標(biāo)簽:黃石 來(lái)賓 果洛 河北 煙臺(tái) 鞍山 陽(yáng)江 赤峰

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作實(shí)例詳解》,本文關(guān)鍵詞  MySQL,數(shù)據(jù)庫(kù),優(yōu)化,之,分表,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作實(shí)例詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于MySQL數(shù)據(jù)庫(kù)優(yōu)化之分表分庫(kù)操作實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 台前县| 集安市| 遂宁市| 日土县| 渭南市| 千阳县| 齐河县| 繁峙县| 康定县| 鹤庆县| 石首市| 商城县| 祁门县| 泗洪县| 安陆市| 奉贤区| 东平县| 扶余县| 鹿邑县| 西乡县| 海阳市| 丹寨县| 庆元县| 德阳市| 龙井市| 德兴市| 沭阳县| 宁乡县| 苍溪县| 武功县| 乐都县| 双鸭山市| 礼泉县| 当涂县| 漾濞| 思茅市| 遵义县| 沿河| 措勤县| 新兴县| 无棣县|