
mysql
张高伟
人生最美的是相遇,最难得的是相逢!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL的btree索引和hash索引(张高伟)
MySQL的btree索引和hash索引Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引原创 2017-06-14 16:56:25 · 235 阅读 · 0 评论 -
阿里云配置mysql navcat远程连接
默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log首先登录: mysql -u root -h localhost -puse mysql #打开mysql数据库 #将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip原创 2017-06-18 13:22:17 · 325 阅读 · 0 评论 -
MySQL的事务处理以及隔离级别
事务是DBMS的执行单位。它由有限的数据库操作序列组成的。但不是任意的数据库操作序列都能成为事务。一般来说,事物必须满足4个条件(ACID)原子性(Autmic):事务在执行时,要做到“要么不做,要么全做“,就是说不允许事务部分的执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库的影响!一致性(Consistency):事务操作之后,数据库所处的状态和业务规则是一致的原创 2017-06-18 13:51:41 · 380 阅读 · 0 评论 -
mysql技巧之数据去重并记录总数
1、使用distinct去重(适合查询整张表的总数)有多个学校+教师投稿,需要统计出作者的总数select count(author) as total from files每个作者都投稿很多,这里有重复的记录。select distinct author from files;有可能两个学校的教师姓名相同,结果只统计一个,出错。select disti原创 2017-06-19 14:39:09 · 2674 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
第一节、B树、B+树、B*树1.前言:动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自转载 2017-06-19 14:42:56 · 367 阅读 · 0 评论 -
MySQL备份方案-->(利用mysqldump以及binlog二进制日志)
MySQL备份方案-->(利用mysqldump以及binlog二进制日志)随着数据不断增加,而且为了兼容以后的innodb存储引擎, 所以考虑采用mysqldump全备+日志增量备份的策略。使用mysqldump对于mysql大部分mysql存储引擎比如myisam、innodb都有很好的支持。方案一:mysqldump全备份+日志增量备份1, mysqldump备份方案:周一凌原创 2017-06-19 14:58:40 · 405 阅读 · 0 评论 -
MySQL 压缩解决方案
描述 MySQL 压缩的使用场景和解决方案,包括压缩传输协议、压缩列解决方案和压缩表解决方案。提到 MySQL 压缩相关的内容,我们能想到的可能是如下几种和压缩相关的场景:1、客户端和服务器之间传输的数据量太大,需要进行压缩,节约带宽2、MySQL 某个列的数据量大,只针对某个列的数据压缩3、MySQL 某个或者某几个表数据太多,需要将表数据压缩存放,减少磁盘空间的转载 2017-07-13 09:13:28 · 350 阅读 · 0 评论 -
干货:mysql索引的数据结构
索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查原创 2017-07-13 09:35:23 · 235 阅读 · 0 评论 -
MySQL 占用空间一键查询实践
经常会遇到DB满的情况 特别是大家共用DB的时候 这时候需要找到,哪个DB比较大,哪个表比较大,默认的方法你得一个一个的查询, 毕竟这里你没法使用 du -sh 这种文件系统级别的命令 但这肯定不是偷懒程序员爱干的事。原理很简单: MySQL在系统库中记录了这些数据,只需要使用一条SQL命令组合起来就好| TABLE_SCHEMA | varchar(64) | NO | | | |原创 2017-07-13 09:36:49 · 279 阅读 · 0 评论 -
mysql 多主多从
1. MySQL复制原理2. mysql一主多从3. MySQL 双主4. mysql 读写分离5. mysql + keepalived高可用6. mysql 监控7. mysql 参数详解8. mysql 监控9. mysql replication 常见错误及处理方法实验环境说明10.0.0.25 nameserver.baby.local监控原创 2017-07-25 14:24:56 · 613 阅读 · 0 评论 -
mysql-proxy数据库中间件架构
一、mysql-proxy简介mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server。它使用mysql协议,任何使用mysql-client的上游无需修改任何代码,即可迁移至mysql-proxy上。mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:进一步的,转载 2017-07-26 07:44:06 · 321 阅读 · 0 评论 -
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
//其中 video 是表名;//createtime 是字段;////数据库time字段为时间戳////查询当天: $start = date('Y-m-d 00:00:00');$end = date('Y-m-d H:i:s');SELECT * FROM `table_name` WHERE `time` >= unix_timestamp(原创 2017-07-26 15:54:19 · 1454 阅读 · 0 评论 -
开启mysql慢查询日志
查看配置://查看慢查询时间show variables like "long_query_time";默认10s//查看慢查询配置情况show status like "%slow_queries%";//查看慢查询日志路径 show variables like "%slow%"; 修改配置文件在my.ini中加上下面两句话log-sl原创 2017-07-30 10:46:41 · 268 阅读 · 0 评论 -
MySQL索引底层实现(张高伟)
索引的本质MySQL官方对于索引的定义为:索引是帮助MySQL高效获取数据的数据结构。即可以理解为:索引是数据结构。 我们知道,数据库查询是数据库最主要的功能之一,我们都希望查询数据的速度尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找,当然这种时间复杂度为O(n)的算法在数据量很大时显然是糟糕的,于是有了二分查找、二叉树查找等。但是二分查找原创 2017-06-14 16:54:53 · 308 阅读 · 0 评论 -
InnoDB引擎的索引和存储结构
1.MySQL主要存储引擎的区别MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有MERGE、MEMORY(HEAP)等。(1)主要的几个存储引擎MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。MyISAM是Mysql的默认存储引擎。当create创建新表时,未指定新表的存储引擎时,默认使用MyISAM。每个MyISAM在磁盘上存储成三个文原创 2017-06-14 10:30:15 · 333 阅读 · 0 评论 -
sql里将重复行数据合并为一行,数据用逗号分隔(张高伟)
一.定义表变量DECLARE @T1 table(UserID int , UserName nvarchar(50),CityName nvarchar(50));insert into @T1 (UserID,UserName,CityName) values (1,'a','上海')insert into @T1 (UserID,UserName,CityNa原创 2017-06-14 10:26:59 · 4611 阅读 · 0 评论 -
MySQL命令
基本操作/* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)/* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程...原创 2019-10-09 17:37:19 · 459 阅读 · 0 评论 -
数据传输或导入是报错:Invalid default value for 'date'
在执行mysql数据库时报错CREATE TABLE `advert_schedule_time` ( `advert_id` int(11) NOT NULL DEFAULT '0' COMMENT '广告id', `stime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '开始时间', `etime` t...原创 2018-10-29 19:55:38 · 7297 阅读 · 1 评论 -
mysql 中 find_in_set()
mysql 中 find_in_set() 方法:有时候我们在设计数据库时有以下情况,如:在视频表中有个字段week, 他存储的是视频在周几播放,如某视频只在周1,4,6播放,那么week字段对应的值以 1,4,6 的格式存储那们我们要用sql查找所有视频中周4可以播放的视频 (这个时候不是用like能解决的,使用like可能查到我们不想要的记录)这时就需要 find_in_set...转载 2018-08-29 17:21:17 · 215 阅读 · 0 评论 -
使用navicat导出数据字典 - mysql
利用mysql的information_schema中的COLUMNS表和navicat中的导出功能实现快速导出数据字典:1.查询出字段:selectTABLE_NAME 表名,COLUMN_NAME 字段名,COLUMN_TYPE 数据类型,COLUMN_COMMENT 字段描述,COLUMN_DEFAULT 默认值,COLUMN_KEY 索引from information...原创 2018-07-25 18:06:14 · 1172 阅读 · 0 评论 -
mysql性能优化(八) mysql索引优化
前言索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共...转载 2018-05-14 22:50:51 · 212 阅读 · 0 评论 -
mysql性能优化(九) mysql慢查询分析、优化索引和配置
一、 优化概述MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。除了服务器硬件的性能瓶颈,对于MySQL系统本身,我们可以使...转载 2018-05-14 22:49:35 · 508 阅读 · 0 评论 -
mysql性能优化(五) mysql中SELECT+UPDATE处理并发更新问题解决方案
一 问题背景:假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下:当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求:•如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数•如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数•续买后active_status必须为...转载 2018-05-14 22:46:40 · 1066 阅读 · 0 评论 -
MySQL开发36军规
(一)核心军规(1)不在数据库做运算:cpu计算务必移至业务层(2)控制单表数据量:单表记录控制在1000w(3)控制列数量:字段数控制在20以内(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据(5)拒绝3B:拒绝大sql,大事物,大批量(二)字段类军规(6)用好数值类型tinyint(1Byte)smallint(2Byte)mediumin原创 2017-06-13 12:22:23 · 282 阅读 · 0 评论 -
开启梦幻般的webrtc之旅(张高伟)
废话不多说,直接上demo[python] view plain copy "utf-8"> 学习webrtc "main.js"> 新建main.js[python] view plain原创 2017-06-13 12:28:25 · 342 阅读 · 0 评论 -
生成mysql数据字典 (张高伟)
给你们先演示一下效果:数据字典(张高伟)address 字段名数据类型默认值允许非空自动递增备注idint(10) unsigned NO是 imgvarchar(255) YES spotsvarchar(255) YES ran原创 2017-06-13 13:43:50 · 2337 阅读 · 0 评论 -
传统MySQL+ Memcached架构遇到的问题(张高伟)
实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。Memcached与MySQL数据库数据一致性问题。Memcached数据命中率低或down原创 2017-06-14 10:05:28 · 324 阅读 · 0 评论 -
Mysql的列索引和多列索引(联合索引)(张高伟)
创建一个多列索引:CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name,first_nam原创 2017-06-14 10:08:52 · 589 阅读 · 0 评论 -
MySQL索引设计背后的数据结构及算法详解
在我们公司的DB规范中,明确规定:1、建表语句必须明确指定主键2、无特殊情况,主键必须单调递增对于这项规定,很多研发小伙伴不理解。本文就来深入分析MySQL索引设计背后的数据结构和算法,从而帮你释疑以下几个问题:1、为什么InnoDB表需要主键?2、为什么建议InnoDB表主键是单调递增?3、为什么不建议InnoDB表主键设置过长?原创 2017-08-04 09:42:07 · 305 阅读 · 0 评论 -
php mysql数据库备份
用PHP代码实现数据库备份可以使网站的管理变得非常便捷,我们可以直接进后台操作就能完成数据库的备份。关键技术:1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组。2. show create table 表名 可以获取表结构。3. select原创 2017-08-08 11:36:29 · 514 阅读 · 0 评论 -
MySQL 5.6 my.cnf 参数记录
提供一个MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件my.txt昨天我在自己用的时候,按下面这些参数配置,发现居然启动不成功!检查了半天,原因居然是Percona Server版本的my.cnf中有些名称好像与下面的不一样!比如 table_open_cache 它的是 table-open-cache !!祝你好运!所以不要相信老法师!!另外推荐:https://转载 2017-12-14 09:16:33 · 348 阅读 · 0 评论 -
MySQL使用mysqldump备份数据库脚本手工执行成功 crontab定时却失败的解决方法
用crontab自动备份MySQL的时候导出总是为空,原因是corn的环境变量中没有mysqldump,所以用crontab执行mysqldump的时候要加上绝对路径,如:/yourMySQLPath/bin/mysqldump xxxxxxx这样就可以了!如果不知道绝对路径可以用ps -ef|grep mysql或者whereis mysqldump查询例如我本地的就是#!/bin/原创 2017-12-14 09:17:17 · 3802 阅读 · 2 评论 -
MySQL使用explain分析sql效率
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。Explain语法:EXPLAIN tableName或EXPLAIN [EXTENDED] SQL前者可以得出一个表的字段结构等等后者主要是给出相关的一些索引信息转载 2017-12-14 09:18:03 · 296 阅读 · 0 评论 -
mysql 替换函数replace()实现mysql替换指定字段中的字符串
mysql 替换字符串的实现方法:mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便。 mysql 替换函数replace() UPDATE `table_name` SET `field_name` = replace (`field_name`,'from_str','to_str') WHERE `field_转载 2017-12-15 10:07:11 · 100698 阅读 · 2 评论 -
mysql的sql语句中直接计算时间 查询昨天 一周前 一月前 一年前的数据的方法
mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB,参考如下SELECT * FROM contentwhere inputtime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)where inputtime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)where inputtime>转载 2017-12-15 10:07:35 · 1574 阅读 · 0 评论 -
mysqldump备份和还原&&使用mysqldump备份和恢复所有数据库
备份指定库:mysqldump -h127.0.0.1 -uroot -p --lock-tables --events --triggers --routines --flush-logs --master-data=2 --databases db1 db2 db3 > ./db.sql备份所有库:mysqldump -uroot -p -hlocalhost --lock-all转载 2017-12-15 10:07:50 · 2945 阅读 · 1 评论 -
MySQL服务器CPU跑满100%的情况分析
一朋友服务器CPU100%.摄影网站,理论上来说,同时在线不会过百.数据库的连接数更不可能会2000.MySQL我给的2000的链接数,居然跑满了,而且服务器也特别的卡.看来需要入手检查了.1.第一步,万能的重启.当然可能重启了一会儿还是继续高上去2.检查连接数和慢查询语句.开始分析了.我们的原则是,重启能解决的,绝对不开clientcpu100%通常情况下就是有慢sql造成的,这转载 2017-12-15 10:08:21 · 7180 阅读 · 0 评论 -
MySQL事务、存储过程、视图、自定义函数、触发器、事件的简单使用及理解
事务:通俗的说事务: 指一组操作,要么都成功执行,要么都不执行. -->原子性在所有的操作没有执行完毕之前,其他会话不能够看到中间改变的过程. -->隔离性事务发生前,和发生后,数据的总额依然匹配. -->一致性事务产生的影响不能够撤消. -->持久性如果出了错误,事务也不允许撤消, 只能通过"补偿性事务"举个粟子:李三: --->支出500, 李三 -500赵四:转载 2017-12-15 10:08:32 · 3703 阅读 · 0 评论 -
网站优化 大并发 大流量 大存储 负载均衡 集群
1、pv(page views)网页的浏览量:概念:一个网站所有的页面,在24小时内被访问的总的次数。千万级别,百万级别,2、uv值(unique vistor)独立访客概念:一个网站,在24小时内,有多少个用户来访问我们的网站。达到10万3、独立ip,概念:一个网站,在24小时内,有多少个ip来访问我们的网站。uv值约等于独立ip.如果要考虑局域网,uv值略大于独立ip转载 2017-12-18 10:18:22 · 416 阅读 · 0 评论 -
mysql数据库SQL分页过多时如何优化?
QL分页过多时(例如 limit 1000000, 20),效率会明显降低下,如何优化?SQLServer用的是类似:SELECT top 10 * FROM USER ORDER BY uid ASC ;MySQL用的是类似:SELECT * FROM USER ORDER BY uid ASC LIMIT 0,10;如果要显示第二页的数据,通常的做法是SELECT *转载 2017-12-18 10:18:37 · 570 阅读 · 0 评论