
数据库
文章平均质量分 74
u012903992
这个作者很懒,什么都没留下…
展开
-
mysql 常见面试题
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。2、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上,这就要求同一个叶子节点内(大小为一转载 2021-03-01 17:07:48 · 193 阅读 · 0 评论 -
看了这篇文章觉得MySQL读写分离这么简单
https://blog.youkuaiyun.com/qq_36386908/article/details/105279214转载 2021-03-01 11:10:24 · 136 阅读 · 0 评论 -
数据库分库分表思路
一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操转载 2021-03-01 10:57:15 · 419 阅读 · 0 评论 -
这篇 MySQL 索引和 B+Tree 讲得太通俗易懂
正确的创建合适的索引,是提升数据库查询性能的基础。在正式讲解之前,对后面举例中使用的表结构先简单看一下:create table user( id bigint not null comment 'id' primary key, name varchar(200) null comment 'name', age bigint null comment 'age', gender int null comment '转载 2021-02-26 16:56:09 · 373 阅读 · 0 评论 -
《我想进大厂》之Redis夺命连环11问
这是面试题系列第三篇–redis专题。说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。 链表linkedlist:redis链表是一个双向无环链表结构,很多发布订阅、慢查询、监视器功能都是使用到了链表来实现,每个链表的节点由一个l转载 2020-10-13 21:39:13 · 194 阅读 · 0 评论 -
MySQL数据库访问性能优化
MYSQL应该是最流行的WEB后端数据库。大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储。 MYSQL如此方便和稳定,以至于我们在开发 WEB 程序的时候非常少想到它。即使想到优化也是程序级别的,比方不要写过于消耗资源的SQL语句。可是除此之外,在整个系统上仍然有非常多能够优化的地方。1优化原理 说起MySQL的查询优化,相信大家会想到:不能使用SELECT *、不...原创 2020-09-03 20:58:23 · 1358 阅读 · 0 评论 -
Oracle的number类型的字段值显示科学计数值
最近做需求建了几张表,主键都是number类型的,在sqlplus中查询的时候,发现主键值进行了科学计数的显示,这看起来非常的奇怪。网上找了下方法,记录如下: 原因: SQLPlus在显示number类型时,小于等于10位的精度显示的是很直观的形式,大于10位精度的则显示为科学计数的形式。 解决方法: 将number转成char类型,设置一下即可:tools->preferences->sql windows->number fie...原创 2020-08-12 17:26:30 · 1793 阅读 · 0 评论 -
Oracle之PL/SQL Developer 如何显示行号、修改字体
有时候,不能显示行号,挺淡腾的,需要查看有多少个字段的情况,就需要显示行号的操作了,如果不能修改字体大小,真的在屏幕大的显示器上,看着很不爽啊。没有行号的情况设定行号1、选中Tools2、Editor 设定[Display Line numbers]3、Window Types –>Sql Window 选中显示行号4、点击确认后,行号显示出来了5、修改行号字体大小修改后字体变大了,舒服多了其他字体修改1、选择需要修改的字体位子2、设定字体3、设.原创 2020-08-11 09:23:37 · 1045 阅读 · 0 评论 -
负载均衡的常用算法
在集群中,假设有五台服务器,他们之间的地位相同(主备模式不是我们要讨论的内容),都对外提供服务。当浏览器大量请求到达时,如何决定哪个请求到达哪个服务器上,这就是我们这次讨论的核心内容。负载均衡的策略分为应用服务器和分布式缓存集群两种适应场景。为什么这么分呢?简单的说,应用服务器只需要转发请求就可以了。但分布式缓存集群,比如redis、Memcached等,更多的是需要再次读取数据的。也正是因为这样,当新加入一台机器后,要尽量对整个集群的影响小。1、应用服务器NO.1—— Random 随机转载 2020-07-13 13:42:53 · 307 阅读 · 0 评论 -
mysql和mysqld的区别
1.mysqld是后台服务程序,即mysql服务器,是一个服务,linux中的服务通常以d结尾,缩写是daemon,守护的意思2.mysql是一个交互式输入sql语句或从sql文件批处理它们的一个命令行工具,它相当于一个客户端软件,可以对服务端mysqld发起连接。...原创 2020-07-01 13:47:48 · 3037 阅读 · 0 评论 -
oracle中sysdate - 1/24/60的意思
在Oracle中,sysdate - 1/6、sysdate - 1/24/60等,表示从当前时间往前推若干时间,若干时间的计算方式如下:1.如果是A/B类型,则表示往前推n小时,A表示天数,B表示小时,n = A×24/B。例如:sysdate - 1/6,此处A = 1;B = 6。n = 1×24/6 = 4即 select sysdate - 1/6 from dual 得出的时间是当前时间往前推4小时2.如果是A/B/C类型。则表示往前推m分钟,A表示天数,B表示小时,C表示分钟。m的转载 2020-06-24 16:33:34 · 8779 阅读 · 0 评论 -
Redis 分布式高可用终极指南
最近项目上需要用到 redis 高可用方案,遂上网找了一些资料学习,但是网上关于 redis 高可用的几种实现方式或口径不一,或含糊不清,或缺斤少两。经历了多方资料学习和实际验证,本文试图将 redis 分布式和集群方案从概念理解到技术选型到搭建使的整个过程用最简单的语言讲述清楚。分布式与集群下文会涉及到大量的分布式和集群术语,这里我们先来复习一下集群和分布式的概念,加深一下理解。目前的项目很少会采用单机架构了,一是因为单机性能有限,二是因为单机服务一旦故障整个系统就无法继续提供服务了。所以目前原创 2020-06-04 17:48:05 · 346 阅读 · 0 评论 -
redis问答
1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅...原创 2020-04-13 15:50:08 · 228 阅读 · 0 评论 -
mysql之show engine innodb status解读
注:以下内容为根据《高性能mysql第三版》和《mysql技术内幕innodb存储引擎》的innodb status部分的个人理解,如果有错误,还望指正!! innodb存储引擎在show engine innodb status(老版本对应的是show innodb status)输出中,显示除了大量的内部信息,它输出就是一个单独的字符串,没有行和列,内容分为很多小段,每一段对应in...转载 2020-04-10 15:57:29 · 1579 阅读 · 0 评论 -
Mysql update后insert造成死锁原因分析及解决
系统中出现死锁的日志如下:*** (1) TRANSACTION:TRANSACTION 1331088253, ACTIVE 0 sec insertingmysql tables in use 1, locked 1LOCK WAIT 7 lock struct(s), heap size 1184, 3 row lock(s), undo log entries 4MySQ...原创 2020-04-10 15:55:41 · 2134 阅读 · 0 评论 -
MySQL中show engine innodb status的详解
应用报错中,我们需要从获取到一些关键的信息点,死锁等情况说明,可以通过show engine innodb status中获取mysql>show engine innodb status+----------------+----------------+--------------------------------------------------------------...原创 2020-04-10 10:12:16 · 1752 阅读 · 0 评论 -
MySQL详解--锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL...转载 2020-04-09 18:01:39 · 180 阅读 · 0 评论 -
两个事物 update同一张表出现的死锁问题
多个事务同时更新表(无论一张还是多张)都要注意u锁和x锁!引言近来做省一级计算机一级考试系统的时候,学生端进行大批量判分的时候,出现了这样的问题(事务(进程 ID 262)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。):这个就是我们在代码中写了大批量的update语句,用trace Profiler ,我们对死锁追踪是这样的:...原创 2020-04-08 17:38:53 · 2460 阅读 · 0 评论 -
预编译语句(Prepared Statements)介绍,以MySQL为例
1. 背景本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本。2. 预编译语句是什么通常我们的一条sql在db接收到最终执行完毕返回可以分为下面三个过程:词法和语义解析 优化sql语句,制定执行计划 执行并返回结果我们把这种...转载 2020-04-08 15:05:01 · 2071 阅读 · 0 评论 -
关于 MySQL connections 的一些知识
于 MySQL connections 的一些知识查看MySQL连接数的限制1、查看整个MySQL实例的最大连接数限制:mysql> show global variables like '%connections%';+----------------------+-------+| Variable_name | Value |+----------...转载 2020-04-07 18:58:03 · 991 阅读 · 0 评论 -
MySQL遇到Deadlock found when trying to get lock,解决方案
最近遇到一个MYSQL update语句出现Deadlock found when trying to get lock的问题,分析一下原因。什么情况下会出现Deadlock found when trying to get lock?https://dev.mysql.com/doc/refman/5.6/en/innodb-deadlocks.html出现死锁需要2个条件:1)至少2个c...原创 2020-04-07 13:29:10 · 2524 阅读 · 0 评论 -
mysql貌似因为连接数太大而连接不上,根据网上的教程,写份查询连接数命令的总结
先是要进入到mysql的命令行,然后执行语句查询最大可连接数show variables like '%max_connections%';查询一下当前的连接数show processlist;或者这条语句也同样可以查询show status like 'Threads%';这里面的Threads_connected即为连接数。--------...原创 2020-04-01 17:59:12 · 614 阅读 · 1 评论 -
mysql too many connections问题,kill掉所有锁表进程
说明:因为线上mysql实例太多,也就经常会遇到Too many connections的问题。出现这种问题的时候业务已经出现问题。此时最重要的还是先恢复业务。这里可以先获取show innodb status和show full processlist的信息以便等会分析原因。当然要先能连得进mysql。可以通过临时将连接数稍微调大,让自己能登陆上去,一般这种情况下登陆的时候也会出现Too ma...转载 2020-04-01 14:14:53 · 712 阅读 · 0 评论 -
Mysql 查看连接数,状态 最大并发数(赞)
-- show variables like '%max_connections%'; 查看最大连接数set global max_connections=1000 重新设置mysql> show status like 'Threads%';+-------------------+-------+| Variable_name | Value |+---...原创 2020-03-31 15:39:11 · 570 阅读 · 0 评论 -
查询mysql当前连接数
show full processlist;show status like 'thread%';1.show status Threads_connected 当前的连接数 Connections 试图连接到(不管是否成功)MySQL服务器的连接数。 Max_used_connections 服务器启动后已经同时使用的连接的最大数量。2.set ...原创 2020-03-31 10:55:36 · 876 阅读 · 0 评论 -
怎么实时查看mysql当前连接数
1、如何实时查看mysql当前连接数? 1.查看当前所有连接的详细资料: ./mysqladmin -uadmin -p -h10.140.1.1 processlist 2.只查看当前连接数(Threads就是连接数.): ./mysqladmin -uadmin -p -h10.140.1.1 status 3.查看当前所有连接的详细资料: mysqladmi...原创 2020-03-31 10:50:47 · 2183 阅读 · 0 评论 -
mysql5.1,5.5,5.6做partition时支持的函数
mysql5.1支持的partition函数(http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-functions.html)ABS() CEILING()(seeCEILING() and FLOOR()) DAY() DAYOFMONTH() DAYOFWEEK() DAY...原创 2020-03-28 11:42:39 · 447 阅读 · 0 评论 -
mysql时间、字符串、时间戳互相转换
时间转字符串select date_format(now(), ‘%Y-%m-%d %H:%i:%s’);结果:2018-05-02 20:24:10时间转时间戳select unix_timestamp(now());结果:1525263383字符串转时间select str_to_date(‘2018-05-02’, ‘%Y-%m-%d %H’);结果:2018-05-0...原创 2020-03-27 21:28:29 · 612 阅读 · 0 评论 -
mysql利用TO_DAYS()函数创建分区
创建分区,为tg_sr_data表的字段logTime创建分区,TO_DAYS返回天级别的,下面的LESS THAN (737877)中的737877是1970到现在的天数时间。ALTER TABLE tg_sr_data PARTITION by RANGE(TO_DAYS(logTime))(PARTITION p20200327 VALUES LESS THAN (737877) E...原创 2020-03-27 12:50:37 · 1994 阅读 · 1 评论 -
mysql 查看表的分区信息
SELECT PARTITION_NAME,TABLE_ROWS,PARTITION_EXPRESSION,PARTITION_DESCRIPTION FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='test' AND TABLE_NAME = 't11'; 查看某张表的分区名字,分区内行数,分区表达的列,分区范围(test是你目的...原创 2020-03-26 14:32:52 · 1151 阅读 · 0 评论 -
mysql 最大连接数是什么意思?有什么用?如何修改?
服务器同时最大连接数,也就是说可以有一千个用户,但只能同时一百个用户访问数据库,也就是响应客户端连接的最大进程数 注意 是有一个连接进程算一个 不是指电脑台数。错过最大连接数后,新的数据库连接无法发起 老的保持正常。数据库连接数突然增大是什么原因?可能是数据库性能突然变慢,连接的客户要很久才能得到响应,客户以为是自己没确认到,于是客户就不断地连接,这样会话就增加了,数据库就更忙了,最...原创 2020-03-25 15:41:59 · 4072 阅读 · 0 评论 -
mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上。 问DBA,给我的写入答案是在1W(机械硬盘)左右。联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘)但这东西感觉从来没证实过,故一时兴起,弄台虚拟机压测起来。想搞清下面的问题:1,mysql支撑多少连接数?2,写入瓶颈到底是多少?3,求QPS畅想:足够的CPU,...原创 2020-03-25 15:39:22 · 6792 阅读 · 0 评论 -
mysql批量插入数据量过大报错解决办法
Packet for query is too large (6071393 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable.批量插入数据量过大,解决办法修改 my.ini 加上max_allowed_packet =671088646...原创 2020-03-24 18:18:04 · 968 阅读 · 0 评论 -
Mysql插入大量数据速度慢的解决方法:批量插入
景:项目需要导入案件2200条。其中导入的excel每个行案件的信息上包含大约15个联系方式。那么总的联系方式一共用30000条左右这里优化之前的速度是16-20分钟之间。太慢了。找了好久优化的方法。最后确定了使用mysql批量插入的方法去进行插入操作慢的原因及解决思路:这里慢的原因是针对本项目:插入方式为程序遍历循环逐条插入。在mysql上检测插入一条的速度在0.02s到0.04...原创 2020-03-24 18:17:32 · 8748 阅读 · 2 评论 -
Go prepare statment超过mysql最大数
mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (current value: 16382)。给出的回复如下:max_prepared_stmt_count参数限制了同一时间在mysqld上所有session中prepared 语句的上限。它的取...原创 2020-03-24 18:16:56 · 610 阅读 · 0 评论 -
Can't create more than max_prepared_stmt_count statements (current value: 16382) MYSQL预编译SQL数量超过限制问题
最近产品一直在这个错当缓存的预编译SQL数量超过默认最大值时 就会产生如上错误 导致数据库直接无法使用 线上出现这个问题真是愁死人话不多说 直接上解决思路:当时发现这个问题的时候 查了下数据库预编译SQL创建次数show global status like 'com_stmt%';发现close 永远是0 这个问题源于vertx 以下是我在vertx官方提交的iss...原创 2020-03-24 18:16:34 · 4261 阅读 · 0 评论 -
8个SQL语句常用优化技巧
要提高SQL语句的执行效率,最常见的方法就是建立索引,以及尽量避免全表扫描。在本章MySQL教程中,UncleToo给大家整理一些常见的SQL优化技巧,避免全表扫描。一个简单的优化,也许能让你的SQL执行效率提高几倍,甚至几十倍。1、避免在where子句中使用 is null 或 is not null 对字段进行判断。如:select id from table where name is...原创 2019-11-06 16:24:22 · 267 阅读 · 0 评论 -
数据库SQL调优的几种方式
在项目中,SQL的调优对项目的性能来讲至关重要,所有掌握常见的SQL调优方式是必不可少的,下面介绍几种常见的SQL的调优方式,供借鉴.一.创建索引1.要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引2.(1)在经常需要进行检索的字段上创建索引,比如要按照表字段username进行检索,那么就应该在姓名字段上创建索引,如果经常要按照员工部门和员工岗位级别进...原创 2019-11-06 16:18:44 · 484 阅读 · 0 评论 -
execute immediate
首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵逼的看着,一星差评!!!execute immediate以下引用介绍比较好的例子说明create or replace procedure proc_test(--参数区域)is --变量区域...原创 2019-11-03 11:16:11 · 8559 阅读 · 0 评论 -
oracle 实际返回的行数超出请求的行数 如何让它返回多行
代码是这个样:createorreplaceproceduredemo3(numoutnumber)asavgsalaryvaluenumber;--存放平均工资onesalaryvaluenumber;--存入员工平均工资beginnum:=0;selectavg(s.salaryvalue)intoavgsalaryvaluefromsalary...原创 2019-10-29 18:46:41 · 5101 阅读 · 0 评论