×

数据库mysql

如何使用MySQL数据库?为什么现在大部分互联网公司使用的数据库是MySQL

admin admin 发表于2022-08-13 02:43:39 浏览84 评论0

抢沙发发表评论

日常管理维护数据库不是很方便,为什么国内绝大多数互联网公司使用的数据库都是MySQL呢,这种架构是集中式的架构(比如将所有的数据集中在一个数据库中),为什么现在大部分互联网公司使用的数据库是MySQL放在很久以前,就可以直接使用MySQL数据库,SQL优化:尽量使用索引,效果一样:图形用户管理工具这个就很多了,如何使用MySQL数据库两种方式。

如何使用MySQL数据库

两种方式,一种是MySQL自带的命令行窗口,一种是图形用户管理工具,前者类似于一个cmd窗口,日常管理维护数据库不是很方便,后者就是一个图形用户管理软件,种类繁多,使用起来也相对容易一些,下面我简单介绍一下这2种方式:

命令行窗口

1.这个MySQL一般会自带,安装完MySQL后,直接可以在开始菜单中找到,如下:

2.点击进去,输入密码后,就可以直接使用MySQL数据库,编写SQL代码了,效果如下,这里你也可以将MySQL添加到环境变量中,后面就可以直接使用命令“mysql -h localhost -u root -p”连接,效果一样:-数据库mysql

图形用户管理工具

这个就很多了,下面我简单介绍几个软件,基本功能都不相上下,选择适合自己的一个就行:

1.MySQL workbench:这个是MySQL官方自带的一个图形用户管理工具,免费、跨平台,可以直接在MySQL官网下载,支持数据库的迁移、设计、建模、备份和恢复等功能,可以直接新建查询,编写SQL语句,使用起来非常不错:-数据库mysql

2.Navicat:这也是一个非常不错的图形用户管理工具,大部分开发人员都应该听说或者使用过,界面干净整洁,可以直接建库建表、设计相关字段属性和主外键等,也支持数据库备份、恢复等功能,使用起来也非常方便:-数据库mysql

3.DataGrip:这是一个比较专业的数据库管理工具,Jetbrains公司的产品,支持目前几乎所有的主流关系型数据库,像MySQL,Oracle,SQL Server等,新建查新、建库建表、日常备份恢复等功能都非常不错,支持代码高亮、语法提示和自动补全,使用起来非常不错,值得一试:-数据库mysql

这里就介绍这3个软件,当然,还有许多其他管理工具,像SQLyog,phpMyAdmin,HeidiSQL,Sequel Pro等都不错,这里就不一一介绍了,感兴趣的话,可以到网上搜一下相关软件和资料,非常多。-数据库mysql

至此,这2种使用MySQL的方式都介绍完了。总的来说,第一种方式使用起来不是很方便,日常开发使用不多,图形用户管理工具的方式使用最多,也更方便日常维护管理数据库,建议初学者的话,还是使用图形用户管理工具,更容易一些,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言。-数据库mysql

为什么现在大部分互联网公司使用的数据库是MySQL

放在很久以前,MySQL是很少受待见的,而现在MySQL越来越受到重视,包括银行在内的一些系统也会采用MySQL。

为什么国内绝大多数互联网公司使用的数据库都是MySQL呢?主要原因可以归结为以下这几类:

1、LNMP架构模式的推动

Linux+Nginx+MySQL+PHP这种架构选型在中小型互联网公司使用是最多的,也是最主流的。像淘宝早期也是这种技术选型。因为PHP+MySQL是“黄金搭档”,加上PHP开源框架太多,市场占有率很高,所以也催生了MySQL的发展。-数据库mysql

2、大型公司去IOE化的推动:

在以前,一般的不差钱的大型企业在信息化这块的选型较多的就是IOE(IBM小型机AIX系统+Oracle数据库+EMC存储),因为IOE能支撑庞大的业务、很稳定、说出去也是高大尚的。

但是IOE不是一般中小型企业能承担的,IOE的投入巨大。所以在前几年国内不少大型互联网企业称要去IOE化,2013年5月阿里巴巴最后一台IBM小型机下线,2013年07月淘宝广告系统使用的Oracle数据库下线,都是阿里巴巴在去IOE化路上的重要里程碑。-数据库mysql

为什么要去IOE呢?IOE的架构模式都是利用小型机和高端存储设备来提供高性能的处理与存储服务,这种架构是集中式的架构(比如将所有的数据集中在一个数据库中),当性能不足时,就通过增加硬件(CPU/内存/磁盘)的方式来提高处理能力,而这种集中式架构不适应当下的大数据需求了。-数据库mysql

去IOE的重要实施方案中有一点就是将集中式的Oracle换为分布式的MySQL集群,MySQL可以通过水平扩展来解决性能问题

3、开源免费

较Oracle、SQL Server而言,MySQL是开源免费的(虽然MySQL被Oracle了),不像Oracle和SQL Server是需要商业付费的,而且价格昂贵。


以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,欢迎关注我了解更多科技知识!

mysql数据库中,数据量很大的表,有什么优化方案么

个人的观点,这种大表的优化,不一定上来就要分库分表,因为表一旦被拆分,开发、运维的复杂度会直线上升,而大多数公司是欠缺这种能力的。所以MySQL中几百万甚至小几千万的表,先考虑做单表的优化。

单表优化

单表优化可以从这几个角度出发:

  • 表分区:MySQL在5.1之后才有的,可以看做是水平拆分,分区表需要在建表的需要加上分区参数,用户需要在建表的时候加上分区参数;分区表底层由多个物理子表组成,但是对于代码来说,分区表是透明的;SQL中的条件中最好能带上分区条件的列,这样可以定位到少量的分区上,否则就会扫描全部分区。-数据库mysql

  • 读写分离:最常用的优化手段,写主库读从库;

  • 增加缓存:主要的思想就是减少对数据库的访问,缓存可以在整个架构中的很多地方,比如:数据库本身有就缓存,客户端缓存,数据库访问层对SQL语句的缓存,应用程序内的缓存,第三方缓存(如Redis等);

  • 字段设计:单表不要有太多字段;VARCHAR的长度尽量只分配真正需要的空间;尽量使用TIMESTAMP而非DATETIME;避免使用NULL,可以通过设置默认值解决。

  • 索引优化:索引不是越多越好,针对性地建立索引,索引会加速查询,但是对新增、修改、删除会造成一定的影响;值域很少的字段不适合建索引;尽量不用UNIQUE,不要设置外键,由程序保证;

  • SQL优化:尽量使用索引,也要保证不要因为错误的写法导致索引失效;比如:避免前导模糊查询,避免隐式转换,避免等号左边做函数运算,in中的元素不宜过多等等;

  • NoSQL:有一些场景,可以抛弃MySQL等关系型数据库,拥抱NoSQL;比如:统计类、日志类、弱结构化的数据;事务要求低的场景。

表拆分

数据量进一步增大的时候,就不得不考虑表拆分的问题了:

  • 垂直拆分:垂直拆分的意思就是把一个字段较多的表,拆分成多个字段较少的表;上文中也说过单表的字段不宜过多,如果初期的表结构设计的就很好,就不会有垂直拆分的问题了;一般来说,MySQL单表的字段最好不要超过二三十个。-数据库mysql

  • 水平拆分:就是我们常说的分库分表了;分表,解决了单表数据过大的问题,但是毕竟还在同一台数据库服务器上,所以IO、CPU、网络方面的压力,并不会得到彻底的缓解,这个可以通过分库来解决。水平拆分优点很明显,可以利用多台数据库服务器的资源,提高了系统的负载能力;缺点是逻辑会变得复杂,跨节点的数据关联性能差,维护难度大(特别是扩容的时候)。-数据库mysql

希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。