`

(转) MySQL_纠结一个MySQL引擎选择,请大家一起讨论支招

阅读更多
先非常简单的介绍下应用场景吧:
(1)网站应用,读大于写,或者说至少80%是select
(2)核心业务比较简单,核心就三种数据A、B、C;这三类数据都是简单的数据类型,不涉及大字段或者很长的char类型
(3)数据量的估算暂定为2年左右的预期增长吧
     (i)A的数据量大约在10~50万之间,即预期前期(前半年)10万左右,2年内增长到50万左右。
     (ii)B的数据量大约是A的15倍左右。
     (iii)C的数量大约是B的20倍左右。
     (iv)即,如果A有20万条,B大约300万条,C大约6000万条。
(4)因为是一个接近服务器的东西,并发数不会太高,预期150~300rps

数据库本身没得选,就是MySQL。其他客观条件决定了。
当然,这个数据量分表是必须的了,这里就不多说了。前期设计的时候就考虑到了分表。

现在主要是上线的引擎选择:MyISAM还是InnoDB?

两种引擎的差异挺大,具体到这个应用,分别的最具有吸引力的地方:
MyISAM:表结构、数据、索引单独存储
InnoDB:行锁
对于事务的支持,有则更好,没有也无妨,毕竟业务逻辑不负责,在应用里面处理也不错

望大家支招。
======================


建议InnoDB吧,虽然MyISAM很适合你目前描述的场景,但MyISAM的数据恢复简单就是灾难,除非数据丢失不重要。
使用MC+InnoDB 解决性能问题。

=======================

谢谢大家支招

前两天测试了下3000万条数据的情况(数据根据实际场景随即生成,不是顺序的插入2000万条数据)。
目前而言,针对的key的select性能还是可以接受。

为了测试MySQL配置与数据量的一个大致关系。第一阶段的测试基于极其有限资源(表空间用单数据文件,MySQL配置小内存)
之前配置了一个实例,MySQL整体的内存占用量配置在180~200M之间,表空间接近4G。基于此配置,对于C表基于A外键(业务如此,数据库并不建外键)的select第一次在0.7秒左右,第二次就压到0.01秒了(当然了,基于索引的检索,DB cache罢了)。实际应用中如果再加上一级应用缓存(至于用MC或者其他当时候再确定),DB的压力会更小一些。测试的整体情况而言,是可以接受的。

后续会逐渐增大数据量、分割表空间、分表甚至做更多分割、慢慢增大MySQL数据量进行测试。。。。。

平时还要很多其他杂事,估计测试过程会比较长。。。。期望春节前能完成。

============================

现阶段还考虑到单表建库,这个从数据管理的角度最好了;但是对于开发的整体要求比较高、底层的框架变动也不少。。。

平衡中。。。。
===========================
如果读远远大于写,并且不需要事务支持,建议myisam,前端加缓存分压,表大分表。

========================




分享到:
评论

相关推荐

    navicat120_mysql_en_x64.tar.gz

    tar zxvf navicat112_mysql_cs_x64.tar.gz 进入解压的目录,运行如下命令 ./start_navicat 问题一:中文乱码 解决:打开start_navicat文件 将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8" 问题二:试用...

    MySQL_5.1_zh.rar_MYSQL_MySQL_5.1_zh_mysql 中文

    MySQL_5.1_zh.rar 是一个包含 MySQL 5.1 版本中文文档的压缩文件,主要提供了关于 MySQL 数据库管理系统在5.1版本中的详细说明。MySQL 是一款广泛使用的开源关系型数据库系统,以其高效、稳定和易用性闻名。在 MySQL...

    navicat8lite下载 navicat8lite_mysql_en下载 navicat8lite_mysql_en mysql客户端下载

    navicat8lite下载 navicat8lite_mysql_en下载 navicat8lite_mysql_en mysql客户端下载 非常不错的mysql客户端

    lib_mysqludf_sys 的win版本dll库

    "lib_mysqludf_sys 的win版本dll库"这一标题明确指出,我们正在讨论的是一个专为Windows操作系统设计的动态链接库(Dynamic Link Library, DLL)文件,名为lib_mysqludf_sys。DLL是Windows系统中用于封装可重用代码...

    navicat_for_mysql_10.0.11_cn_linux.tar.gz的安装包及其安装及配置步骤

    压缩包中包含navicat_for_mysql_10.0.11_...由于linux里安装Navicat需要安装另一个环境wine,其安装很繁琐,而本Navicat安装包中已经自带wine环境,不需要另外安装wine环境,只需按照压缩包里面的安装方法去安装既可!

    MySQL_5.1_zh.zip

    `MySQL_5.1_zh.chm`文件是一个帮助文件,通常用于存储离线文档,用户可以通过它查询MySQL 5.1的相关信息。CHM是Microsoft的“Compiled HTML Help”格式,它将一系列HTML页面打包成一个文件,便于阅读和搜索。在这个...

    MySQL管理工具--MySQL图形化工具navicat8lite_mysql_cs

    navicat8lite_mysql_cs(MySQL图形化工具) :它是一个功能齐全的、基于GUI的MySQL客户端程序,可以跨平台操作。它提供多种风格的用户界面,支持简体中文,易于操作,某些操作界面与SQL Server数据库系统的客户端工具...

    mysql_client for linux 最新mysql客户端

    本文将深入探讨“mysql_client for Linux”中的最新MySQL客户端,包括其功能、安装过程以及与MySQL服务器的交互。 MySQL客户端是MySQL数据库管理系统的一部分,它允许用户通过命令行界面或编程接口(如PHP、Python...

    学习 用的 mysql_pwd_crack.rar

    mysql_pwd_crack.rar 加上个木头字典 ,自己写也ok

    navicat112_mysql_cs_x64.tar.gz

    Navicat112_mysql_cs_x64.tar.gz 是一个针对64位Windows系统的MySQL数据库管理工具——Navicat112的中文版压缩包。Navicat是由PremiumSoft公司开发的一款强大的数据库管理和开发工具,它支持多种数据库系统,包括...

    MySQL_5_green.rar

    MySQL_5_green.rar 是一个包含MySQL数据库5.x版本的绿色免安装版压缩包。这个版本的设计目的是为了方便用户快速启动和使用MySQL,而无需经历传统安装过程中的复杂步骤。绿色版通常意味着它是一个便携式的软件,不需...

    MySQL_5.1_zh

    MySQL_5.1_zh.chm

    navicat_for_mysql_10.0.11_cn_linux.tar.gz

    这会创建一个名为`navicat_for_mysql`的解压目录。 2. **赋予执行权限**:进入解压后的目录,给予可执行权限: ``` cd navicat_for_mysql chmod +x NavicatForMySQL ``` 3. **移动到可执行路径**:为了方便...

    mysql_5.7.24_windows_x64.zip mysql安装包

    总的来说,`mysql_5.7.24_windows_x64.zip`提供了在Windows系统上部署MySQL的强大功能,无论是用于个人项目还是企业级应用,都是一个可靠的选择。其简易的安装过程和丰富的特性,使得MySQL成为Windows环境下的数据库...

    mysql_5.6.22_win32 C++ API 头文件和库文件

    查询结果存储在一个`MYSQL_RES`对象中,可以通过`mysql_store_result()`获取。 3. **处理结果集**: `MYSQL_RES`对象可以迭代出`MYSQL_ROW`,每一行代表查询结果的一条记录。`MYSQL_ROW`是一个指向字符串数组的...

    Navicat_for_MySQL_10.0.5.0 简体中文注册版

    简体中文版的强大的MySql数据库访问工具,给有需要的人

    linux下开发,连接mysql数据库头文件和库文件(32位和64位)

    linux下开发,连接mysql数据库时候用到的头文件和库文件,32位和64位的都有,直接解压根据系统选择32位还是64位,把mysql_include和mysql_lib两个文件夹复制到主文件同级目录,然后makefile里面这样编译gcc -I./...

    MySQL_data.dll

    MySQL_data.dll 是一个与 MySQL 数据库管理系统相关的动态链接库文件,它在 MySQL 的不同版本中都扮演着重要的角色。MySQL 是世界上最受欢迎的开源关系型数据库之一,被广泛应用于各种规模的项目,从个人网站到大型...

    navicat9_mysql_cs——mysql数据库管理

    之前上传的有网友说有毒,经证实,确是如此(第一次上传时是没有的),特发这个下载吧专版,navicat9_mysql_cs——mysql数据库管理

    mysql-master.zip_MYSQL_hang9gr_mysql 存储_orderflc

    标签中的"hang9gr mysql__存储"进一步确认了这是一个关于存储方面的改进。"hang9gr"可能是开发团队的别名或者是这个分支的代号,而"__存储"则明确指出了这个分支关注的是存储相关特性。 在压缩包文件"mysql-master...

Global site tag (gtag.js) - Google Analytics