`

(转) 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...

    MySQL_5.1_zh.chm & MySQL_5.5_en.chm文档

    本文将围绕“MySQL_5.1_zh.chm & MySQL_5.5_en.chm”这两份文档,分别针对中文版和英文版的MySQL手册,解析其中的关键知识点。 首先,`MySQL_5.1_zh.chm` 是MySQL 5.1版本的中文文档,它包含了该版本的所有功能、...

    lib_mysqludf_sys 的win版本dll库

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

    MySQL_5.1_zh.zip

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

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

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

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

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

    navicat112_mysql_cs_x64.tar.gz

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

    MySql.Data.rar_MYSQL_MySql.Data_mysql c_mysql c++_mysql databas

    关于标签中的`mysql_c++`,虽然主要讨论的是.NET环境下的C#,但MySQL也提供了C++ API供开发者使用。C++ API允许直接调用MySQL的底层函数,与MySQL服务器进行通信。这通常需要更深入的编程知识,但也提供了更大的灵活...

    MySQL_Cluster备份与恢复

    在MySQL_Cluster环境中,mysqldump的使用方法与其他存储引擎相同,唯一的区别是在任意的SQL节点备份数据。 例如,在SQL节点192.168.0.70上使用mysqldump备份test库: ``` [root@192.168.0.70 ~]# mysqldump --...

    mysql_client for linux 最新mysql客户端

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

    学习 用的 mysql_pwd_crack.rar

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

    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.1_zh.rar_MySQL_5.1_zh

    这个名为 "MySQL_5.1_zh.rar" 的压缩包包含了一个名为 "MySQL_5.1_zh.chm" 的CHM格式文件,这是一种微软的HTML帮助文件,用于存储大量的离线文档。此外,还有一个 "www.pudn.com.txt" 的文本文件,可能是发布者提供...

    mysql_cn_sc.rar_mysql 中文_mysql手册_sql mysql

    `mysql_cn_sc.chm`文件很可能是MySQL中文版的手册,CHM(Compiled HTML Help)是微软的一种帮助文件格式,将HTML文档集合在一起,方便用户离线浏览。手册通常包含了MySQL的安装、配置、使用方法、SQL语法、存储引擎...

    MySQL_5.5.21_win32安装包

    1. **下载**:从MySQL官方网站获取MySQL_5.5.21_win32安装包,确保文件名为"MySQL_5.5.21_win32_XiaZaiBa"。下载前,检查文件的完整性,防止下载过程中出现错误。 2. **启动安装程序**:解压缩下载的文件,双击运行...

    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`是一个指向字符串数组的...

Global site tag (gtag.js) - Google Analytics