一枚女程序员眼中的mysql,值得收藏

某群聊天内容

什么是数据库?

‍‍数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

王小五

rdbms有什么特点呢?

李小男

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

1.数据以表格的形式出现

2.每行为各种记录名称

3.每列为记录名称所对应的数据域

4.许多的行和列组成一张表单

5.若干的表单组成databas

张三

那RDBMS的术语都有什么呢?

数据库: 数据库是一些关联表的集合。.

数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

列:一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。

行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。

主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

外键:外键用于关联两个表。

复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。

索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

李四

嘿,mysql是关系型数据库吗?

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

Mysql是开源的,所以你不需要支付额外的费用。

Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

MySQL使用标准的SQL数据语言形式。

Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。

MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。

Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

怎么安装呢?

安装方式:在公众平台中输入mysql安装

王小五

Linux下常用的命令都有什么啊?

检测系统是否安装:rpm -qa grep mysql

卸载系统安装:rpm -e mysql  // 普通删除模式

rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

安装nysql:yum install mysql

yum install mysql-server

yum install mysql-devel

启动mysql:service mysqld start;

验证是否安装:[root@host]# mysqladmin --version;mysql> SHOW DATABASES;

创建用户:[root@host]# mysqladmin -u root password "new_password";

检查是否启动:ps -ef grep mysqld;

客户端工具大家都用什么?

mysqlfront,navicat,SQLyog,heidisql这些都挺好用的。

王小五

mysql的存储引擎都有什么?有什么区别?

李小男

查看平台另一篇文章,平台输入:mysql引擎

数据库都创建好了,建数据库,建立表啥的,都怎么操作呢?

查看平台另一篇文章,平台输入:mysql学习

王小五

mysql怎么快速创建一个和原来一模一样的表啊?

create table xibiao select * from jiubiao

王小五

mysql怎么快速创建一个和原来一模一样的表啊?

create table xibiao select * from jiubiao

可以在旧表上加上判断条件,查询出来的就是创建的新表。

王小五

mysql怎么导出数据呢?

SELECT * FROM runoob_tbl

INTO OUTFILE '/tmp/tutorials.txt';

今天的服务器的CPU满了,然后发现都是mysql占据了,因为执行的语句很多,但是根本不知道是哪个语句引起的,我应该怎么办才好呢?

如果为了更好的检测出SQL语句的运行速度,建议开启慢查询日志功能,它是用来记录在mysql中响应时间超过阈值的语句,具体的运行时间会记录在慢查询日志中。

慢日志怎么开启呢?

slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。

默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启;

show variables like '%slow_query_log%';

为OFF表示关闭;

set global slow_query_log=1;

show variables like '%slow_query_log%';

为ON表示开启;

还有一种方式:修改my.cnf文件,增加或修改参数slow_query_log 和slow_query_log_file后,然后重启MySQL服务器

那么开启了慢查询日志后,什么样的SQL才会记录到慢查询日志里面呢?

这个是由参数long_query_time控制,默认情况下long_query_time的值为10秒,可以使用命令修改,也可以在my.cnf参数里面修改。关于运行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于long_query_time,而非大于等于。从MySQL 5.1开始,long_query_time开始以微秒记录SQL语句运行时间,之前仅用秒为单位记录。如果记录到表里面,只会记录整数部分,不会记录微秒部分。

开启慢日志后,我怎么知道有多少条超出了这个阈值呢?

可以使用系统变量:show global status like '%slow_queries%';

小二

我最近面试呢,总是会被问道一些mysql的问题,希望大神帮帮我,MySQL数据库cpu飙升到500%的话他怎么处理?

列出所有进程 show processlist 观察所有进程 多秒没有状态变化的(干掉),kill id ;

查看超时日志或者错误日志 (做了几年开发,一般会是查询以及大批量的插入会导致cpu与i/o上涨,,,,当然不排除网络状态突然断了,,导致一个请求服务器只接受到一半,比如where子句或分页子句没有发送,,当然的一次被坑经历)

老三

小二

你如何确定 MySQL 是否处于运行状态?

1. 在Debian 上运行命令 service mysql status,然后看输出即可。

2.在 RedHat 或者 centos 上运行命令 service mysqld status,然后看看输出即可。

老三

小二

如何列出所有数据库?

如何列出某个数据库内所有表?

1. 运行命令 show databases;

2.在当前数据库运行命令 show tables;

老三

小二

我们公司的经理叫我做备份,数据库的备份应该怎么备份呢?

查看平台另一篇文章,平台输入:mysql备份

老三

如果谁遇到了什么软件的相关问题,可以在平台评论或者联系小编,小编尽量为您解答,如果您的提问有价值,小编将会收录您的问题,延续这篇文章,更多人一起共享问题,谢谢大家观赏。

本文来自企鹅号 - 缘媛零食铺媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

巧用flashback database实现灵活的数据切换(r5笔记第9天)

今天是DTCC第二天了,抽空去听了下,因为手头有一些活,听到一半只能赶回公司继续工作。 客户今天有一个需求,因为开发现在在生产环境中遇到了一些困难,需要在测试生...

35050
来自专栏文渊之博

探索SQL Server元数据(一)

  在数据库中,我们除了存储数据外,还存储了大量的元数据。它们主要的作用就是描述数据库怎么建立、配置、以及各种对象的属性等。本篇简单介绍如何使用和查询元数据,如...

15420
来自专栏哲学驱动设计

MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)

最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题。这里写一篇文章,总结一下这几类问题,以及其对应的解决方案。方便其它项目组参...

23560
来自专栏cs

知识点找回2.0

Servlet(server Applet),全称Java Servlet, 是用java编写的服务器端程序。而这些Servlet都要实现Servlet的这个借...

9310
来自专栏性能与架构

MySql 查看Query Cache的状态

query cache 是mysql性能优化时的重要指标,通过查看query cache的状态信息,就可以知道例如 缓存是否有碎片、命中缓存的数量、没用到缓存的...

37870
来自专栏沈玉琛的专栏

当 MySQL 连接池遇上事务(一):神秘的幽灵锁

MySQL连接池是一个很好的设计,通过将大量短连接转化为少量的长连接,从而提高整个系统的吞吐率。一般各个团队都会对连接池进行封装,只提供简洁的接口供上层使用。但...

1.8K20
来自专栏沈唁志

WordPress添加评论回复邮件提醒通知功能

19220
来自专栏BigNerdCoding

SQLite 并发的四种处理方式

SQLite 是一款轻型的嵌入式数据库它占用资源非常的低,处理速度快,高效而且可靠。在嵌入式设备中,可能只需要几百 K 的内存就够了。因此在移动设备爆发时,它依...

1.2K70
来自专栏做全栈攻城狮

Python教程:连接数据库,对数据进行增删改查操作

本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解和python基础知识之上进行的。如想学习python基础请移步:Python开发实战...

14120
来自专栏数据和云

数据恢复:AMDU数据抽取恢复

今天我们通过一则真实的案例来认识oracle 自带工具AMDU,无需将磁盘组mount即可实现数据分析,轻松进行数据恢复 某日,我们收到了一则香港用户ASM破坏...

32460

扫码关注云+社区

领取腾讯云代金券