MyISAM

mysql中常见函数详解(建议收藏)

℡╲_俬逩灬. 提交于 2020-08-16 13:29:36
目录 前言: 一、单行函数(这里可以简单的理解为函数只处理单行字段,以此分类,那么后面就是分组函数或者叫聚集函数,意味处理多行字段,但都是输出一行字段)。 (一)字符函数 (二)数学函数 (三)日期函数 (四)其它函数 (五)流程控制函数 二、分组函数(聚集函数) 总结: 前言: 距离上一篇博客已经有一个多月了(劳逸结合emmmmm),这里对于mysql常见的函数做一个归纳,方便查询以及系统化的学习,建议多看多用->(调用方式均为select 函数名(实参列表) 【from 表】)。 一、单行函数 (这里可以简单的理解为函数只处理 单行字段 ,以此分类;那么后面就是分组函数或者叫聚集函数,意味处理 多行字段 ,但是输出都是一行字段)。 (一)字符函数 #1.length 获取参数值的字节个数(每个英文一个字节;中文需要看编码,utf8编码一个中文3个字节) eg: SELECT LENGTH('john'); 显示为4 #mysql中代码不区分大小写,但是建议关键字、函数大写,常量小写,所以以下均为此规范。 查看数据库编码集可以为: SHOW VARIABLES LIKE '%char%' #2.concat 拼接字符串 SELECT CONCAT(last_name,'_',first_name) FROM student; 从student表中查找姓名连接在一起 例如输出结果为

2020年Shopee面试问题整理

泪湿孤枕 提交于 2020-08-16 08:08:51
------------恢复内容开始------------ 个人的一二面记录: https://www.cnblogs.com/Jun10ng/p/12616409.html 本文md文件在: https://github.com/Jun10ng/Gache/blob/master/Shopee面试问题整理.md 给个start吧 Shopee面试问题整理 三握手四挥手 及其状态 Go操作redis github 上面的rediGo 什么是平衡二叉树 编程:实现反转链表 MySQL复合索引 set的使用场景 有序set的使用场景 有序且去重的场景 1、 排行榜:有序集合经典使用场景。例如视频网站需要对用户上传的视频做排行榜,榜单维护可能是多方面:按照时间、按照播放量、按照获得的赞数等。 2、用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。 反射 反射的弊端 优点: 运行期类型的判断,动态类加载,动态代理使用反射。 缺点: 性能是一个问题,反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多。 进程调度算法 先来先服务 时间片轮转算法 短作业优先 最短剩余时间 高响应比 优先级 进程间怎么通信 管道 有名管道 套接字 消息队列

PHP程序员如何做好MySQL数据库优化

泪湿孤枕 提交于 2020-08-16 05:08:20
1.使用MyISAM而不是InnoDB MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。 MySQL默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。 外键约束或者事务处理对于数据完整性是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。 结论很简单:使用InnoDB。 2.使用PHP的mysql函数 PHP 自产生之日就提供了MySQL库函数(or near as makes no difference)。很多应用仍然在使用类似mysql_connect、mysql_query、mysql_fetch_assoc等的函数,尽 管PHP手册上说:如果你在使用MySQL v4.1.3或者更新版本,强烈推荐使用您使用mysql展。 mysqli(MySQL的加强版扩展)有以下几个优点: 可选的面向对象接口 prepared表达式,这有利于阻止SQL注入攻击,还能提高性能 支持更多的表达式和事务处理 另外,如果你想支持多种数据库系统,你还可以考虑PDO。 3.没有处理用户输入 这或者可以这样说#1:永远不要相信用户的输入。用服务器端的PHP验证每个字符串,不要寄希望与JavaScript。

MySQL数据库的锁机制

守給你的承諾、 提交于 2020-08-15 19:20:06
在并发访问情况下,很有可能出现不可重复读等等读现象。为了更好的应对高并发,封锁、时间戳、乐观并发控制(乐观锁)、悲观并发控制(悲观锁)都是并发控制采用的主要技术方式。 锁分类 ①、按操作划分:DML锁,DDL锁 ②、按锁的粒度划分:表级锁、行级锁、页级锁 ③、按锁级别划分:共享锁、排他锁 ④、按加锁方式划分:自动锁、显示锁 ⑤、按使用方式划分:乐观锁、悲观锁 乐观锁和悲观锁 乐观并发控制和悲观并发控制是并发控制采用的主要方法。乐观锁和悲观锁不仅在关系数据库里应用,在Hibernate、Memcache等等也有相关概念。 悲观锁:也即悲观并发控制,Pessimistic Concurrency Controller,缩写PCC。悲观锁是指在数据处理过程,使数据处于锁定状态,一般使用数据库的锁机制实现。 备注,在MySQL中使用悲观锁,必须关闭MySQL的自动提交,set autocommit=0。MySQL默认使用自动提交autocommit模式,也即你执行一个更新操作,MySQL会自动将结果提交。 //0.开始事务 begin;/begin work;/start transaction; (三者选一就可 //1.查询出商品信息 select status from t_goods where id=1 for update; //2.根据商品信息生成订单 insert into

3 MySQL中的锁与调优

不问归期 提交于 2020-08-15 06:21:51
MySQL锁与调优 1 锁的分类 MySQL数据库的锁分为 表级锁和行级锁 。从数据库的角度看,行级锁又可以分为 独占锁(排它锁)和共享锁 。 2 共享锁 共享锁,也叫S锁(Shared Lock); 共享锁顾名思义,那就是其锁定的资源可以被其它用户 读取 ,但其它用户 不能修改 (其他用户可以读,但不能修改) ; 如果在select查询语句中要手动加入共享锁,那么对应的SQL语句为: select ... lock in share mode; 3 独占锁(排他锁) 独占锁(排他锁),也称X锁(Exclusive Lock); 独占锁锁定的资源 只允许进行锁定操作的程序使用 ,其它任何对它的操作均不会被接受 ; 执行数据更新命令, 即INSERT、UPDATE 或DELETE 命令时,MySQL会自动使用独占锁; 但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放 ; 在select命令中使用独占锁的SQL语句为: select … for update; 这里需要注意: 一个事务在一行数据上加入了 独占锁 ,那么其余事务不可以在该数据行上加入任何锁, 也就是说加过排他锁的数据行在其他事务中是不能修改数据的,也不能通过 for update和lock in share mode锁 的方式查询数据, 但 可以直接通过select ...from...查询数据

mysql源码包安装方法

夙愿已清 提交于 2020-08-14 22:30:33
mysql 安装前的准备工作 环境准备: linux 系统 cmake mysql 安装包 卸载掉 rpm 包安装的 mysql Yum -y remove mysql mysql-server Rm -rf /etc/my.cnf 安装解决依赖关系: yum -y install ncurses-devel openssl-devel bison gcc gcc-c++ mysql 源码包安装 将源码包上传到 /usr/local/src Tar xzf mysql 安装包 yum -y install cmake yum -y install bison groupadd mysql useradd -g mysql mysql cd /lamp/mysql-5.5.23 cmake\ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql\ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DEXTRA_CHARSETS=all\ -DDEFULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci\ -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_MEMORY_STORAGE_ENGINE

历时七天,史上最强MySQL优化总结,从此优化So Easy!

家住魔仙堡 提交于 2020-08-14 20:20:21
一、概述 1. 为什么要优化 一个应用吞吐量瓶颈往往出现在数据库的处理速度上 随着应用程序的使用,数据库数据逐渐增多,数据库处理压力逐渐增大 关系型数据库的数据是存放在磁盘上的,读写速度较慢(与内存中的数据相比) 2. 如何优化 表、字段的设计阶段,考量更优的存储和计算 数据库自身提供的优化功能,如索引 横向扩展,主从复制、读写分离、负载均衡和高可用 典型SQL语句优化(收效甚微) 二、字段设计 1. 典型方案 ①. 对精度有要求 decimal 小数转整数 ②. 尽量使用整数表示字符串(IP) inet_ aton("ip' ) inet_ ntoa(num) ③. 尽可能使用not null nuI数值的计算逻辑比较复杂 ④. 定长和非定长的选择 较长的数字数据可以使用decimal char为定长(超过长度的内容将被截掉), varchar为非定长,text对内容 长度的保存额外保存而varchar对长度的保存占用数据空间 ⑤. 字段数不要过多字段注释是必要的、字段命名见名思意、可以预留字段以备扩展 2. 范式 ①. 第一范式:段原子性(关系型数据库有列的念,默认就符合了) ②. 第二范式:消除对主键的部分依赖(因为主键可能不止一个);使用一 个与业务无关的字段作为主键 ③. 第三范式:消除对主键的传递依赖;高内聚, 如商品表可分为商品简略信息表和商品详情表两张表 三

mysql相关知识点

假装没事ソ 提交于 2020-08-14 17:05:15
基础: https://blog.csdn.net/fannyoona/article/details/105565198 mysql常用的两个存储引擎 MyISAM和InnoDB mysql 不支持full outer join(外连接) 可以使用左连接+union+右连接实现 union的意思是 合并加去重 如何锁定一行: 来源: oschina 链接: https://my.oschina.net/u/4248433/blog/4456461

MySQL——关于索引的总结

青春壹個敷衍的年華 提交于 2020-08-14 12:09:51
索引的优缺点    首先说说索引的 优点 :最大的好处无疑就算提高查询效率。有的索引还能保证数据的唯一性,比如唯一索引。   而它的 坏处 很明显:索引也是文件,我们在创建索引时,也会创建额外的文件,所以会占用一些硬盘空间。其次,索引也需要维护,我们在增加删除数据的时候,索引也需要去变化维护。当一个表的索引多了以后,资源消耗是很大的,所以必须结合实际业务再去确定给哪些列加索引。 索引的结构    再说说索引的基本结构。一说到这里肯定会脱口而出: B+树!了解B+树前先要了解二叉查找树和二叉平衡树。 二叉查找树 :左节点比父节点小,右节点比父节点大,所以二叉查找树的中序遍历就是树的各个节点从小到大的排序。 二叉平衡树 :左右子树高度差不能大于1。B+树就是结合了它们的特点,当然,不一定是二叉树。   为什么要有二叉查找树的特点?? 因为查找效率快,二分查找在这种结构下,查找效率是很快的。 那为什么要有平衡树的特点呢? 试想,如果不维护一颗树的平衡性,当插入一些数据后,树的形态有可能变得很极端,比如左子树一个数据没有,而全在右子树上,这种情况下,二分查找和遍历有什么区别呢?而就是因为这些特点需要去维护,所以就有了上面提到的缺点,当索引很多后,反而增加了系统的负担。   接着说B+树。 它的结构如下 :    可以发现,叶子节点其实是一个 双向循环链表 ,这种结构的好处就是

一千行 MySQL 学习笔记,你可以看看

岁酱吖の 提交于 2020-08-14 09:58:41
Windows服务 -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格) 连接与断开服务器 mysql -h 地址 -P 端口 -u 用户名 -p 密码 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 数据库操作 -- 查看当前数据库 SELECT DATABASE(); -- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version(); -- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 SHOW DATABASES[ LIKE 'PATTERN'] -- 查看当前库信息 SHOW CREATE DATABASE 数据库名 -- 修改库的选项信息 ALTER DATABASE 库名 选项信息 -- 删除库 DROP DATABASE[ IF EXISTS] 数据库名 同时删除该数据库相关的目录及其目录内容 表的操作 -- 创建表 CREATE