• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql 超大数据/表管理技巧

mysql 超大数据/表管理技巧

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql数据类型,mysql插入数据,mysql修改数据,mysql数据类型详解,mysql插入数据语句等相关知识,希望本文的分享对您有所帮助

如果你对长篇大论没有兴趣,也可以直接看看结果,或许你对结果感兴趣。在实际应用中经过存储、优化可以做到在超过9千万数据中的查询响应速度控制在1到20毫秒。看上去是个不错的成绩,不过优化这条路没有终点,当我们的系统有超过几百人、上千人同时使用时,仍然会显的力不从心。

目录:

    分区存储
    优化查询
    改进分区
    模糊搜索
    持续改进的方案

正文:

    分区存储
    对于超大的数据来说,分区存储是一个不错的选择,或者说这是一个必选项。对于本例来说,数据记录来源不同,首先可以根据来源来划分这些数据。但是仅仅这样还不够,因为每个来源的分区的数据都可能超过千万。这对数据的存储和查询还是太大了。MySQL5.x以后已经比较好的支持了数据分区以及子分区。因此数据就采用分区+子分区来存储。

    下面是基本的数据结构定义:

    对于拥有分区及子分区的数据表,分区条件(包括子分区条件)中使用的数据列,都应该定义在primary key 或者 unique key中。详细的分区定义格式,可以参考MySQL的文档。上面的结构是第一稿的存储方式(后文还将进行修改)。采用load data infile的方式加载,用时30分钟加载8千万记录。感觉还是挺快的(bulk_insert_buffer_size=8m)。
    基本查询优化
    数据装载完毕后,我们测试了一个查询:

    这是毋庸置疑的,通过id进行查询是使用了主键,查询速度会很快。但是这样的做法几乎没有意义。因为对于终端用户来说,不可能知晓任何的资料的id的。假如需要按照username来进行查询的话:

        mysql> explain select * from tmp_sampledata where src between 1 and 7 and username = ‘yourusername'\G
        *************************** 1. row ***************************
        id: 1
        select_type: SIMPLE
        table: tmp_sampledata
        type: ALL
        possible_keys: NULL
        key: NULL
        key_len: NULL
        ref: NULL
        rows: 74352359
        Extra: Using where
        1 row in set (0.00 sec)
</div>

    那这个查询就没法用了。根本就没人能等待一个上亿表的全表搜索!这是我们就考虑是否给username创建一个索引,这样肯定会提高查询速度:

        create index idx_username on tmp_sampledata(username);

    这个创建索引的时间很久,似乎超过了数据装载时间,不过好歹建好了。

&

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySql实现跨表查询的方法详解
  • MySQL分表实现上百万上千万记录分布存储的批量查询设计模式详解
  • 基于mysql数据库的密码问题详解
  • 基于mysql时间处理函数的应用详解
  • 详解MYSQL的备份还原(PHP实现)
  • MySQL笔记之连接查询详解
  • MySQL笔记之数据类型详解
  • MySQL笔记之数学函数详解
  • mysql 超大数据/表管理技巧
  • 关于MYSQL的优化全面详解

相关文章

  • 2017-05-11MySQL自增列插入0值的解决方案
  • 2018-12-05 MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
  • 2018-12-05格式导致的Excel导入sql出现异常的解决方法
  • 2018-12-05mysql 如何插入随机字符串数据的实现方法_MySQL
  • 2017-05-11MySQL笔记之子查询使用介绍
  • 2018-12-05MySQL插入emoji表情失败问题的解决方法
  • 2017-05-11MySQL 联合索引与Where子句的优化 提高数据库运行效率
  • 2018-12-05select into 和 insert into select 两种表复制语句
  • 2017-05-11Windows XP系统安装MySQL5.5.28图解教程
  • 2017-05-11重新restore了mysql到另一台机器上后mysql 编码问题报错

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql高级联结-自联结使用实例
    • MySql存储过程异常处理示例代码分享
    • Mysql搜索引擎及其区别
    • Centos7 实现MySQL局域网备份(包含全备份,日志增量备份)
    • AutoMySQLBackup实现数据库定期备份
    • MySQL如何实现主从复制过程的示例详解(图)
    • mysql导入数据库的方法
    • mysql全文搜索 sql命令的写法
    • mysql数据分组:过滤分组
    • mysql中的“money”类型说明

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有