sql优化

[MySQL]快速解决\"is marked as crashed and should be repaired\"故障

允我心安 提交于 2020-02-28 10:35:26
具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/tablename/posts.MYI 然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。 问题分析: 1、 错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。 还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致 MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。 2、问题解决办法。 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次-

[MySQL]快速解决\"is marked as crashed and should be repaired\"故障

霸气de小男生 提交于 2020-02-28 10:34:00
具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/tablename/posts.MYI 然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。 问题分析: 1、 错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。 还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致 MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。 2、问题解决办法。 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次-

SQL Server 2014里的性能提升

有些话、适合烂在心里 提交于 2020-02-28 09:11:48
在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!! 缓存池扩展(Buffer Pool Extensions) 缓存池扩展 的想法非常简单:把页文件存储在非常快的存储上,例如SSD硬盘,用来扩展缓存池。缓存池扩展来得非常方便,如果你不能给你的数据库服务器物理上增加更多的内存,可以考虑使用缓存池扩展。 资源调控器(Resource Governor) 资源调控器 首次是在SQL Server 2008里引入的,但那个时候还不是个成熟的技术,因为你不能在存储级别调控I/O操作,对于指定工作负荷组,你不能限制缓存池大小。在SQL Server 2014里这些都改变了,因为现在你可以压制I/O操作。限制缓冲池使用率还是不行,但谁会知道在SQL Server 2016里会怎样呢:)。 锁优先级(Lock Priorities) 或许你已经知道,在企业版本里,SQL Server提供你在线操作,或者我可以称它们为“近乎在线操作”。它们近乎是在线的,因为内部SQL Server还是要获取一些锁,这会导致阻塞情况。因此SQL Server 2014引入了 锁优先级 ,在那里如果有这样的情况发生,你可以控制SQL Server如何应对。 聚集列存储索引(Clustered Column Store Indexes) 在SQL Server 2014里引入的最热门的提升是

MySQL 常用字段类型,介绍及其建表使用方法经验分享

时光总嘲笑我的痴心妄想 提交于 2020-02-28 09:09:51
由于工作的公司没有专业的DBA又经常需要建立各种各种的表来满足自己的业务逻辑,所以经常查看MySQL 手册或者谷歌查看相关资料,所以本人就根据我的工作经验和相关资料来介绍一下MySQL各种字段类型及其使用。(由于本人还算是菜鸟哪里写的不对请多多指正,有兴趣的可以探讨一下) MySQL字段类型 int型包括(tinyint, smallint, mediumint, int, bigint) tinyint是1个字节表达范围就是2的8次方(-128-128) 或者(0-255) 很多人不明白为什么有两种情况,因为在计算机中有一种说法叫做无符号,也就是全部是正整数,所以在用MySQL 选择整形字段的时候一定要加上unsigned也就是无符号,因为负数基本不会用到。 smallint是2个字节表达范围2的16次方 smallint是3个字节表达范围2的24次方 int是4个字节表达范围2的32次方,记住这个类型是不能存储手机号的,很多人用它存然后直接报错了,因为int最长到10长度,手机号是11位,所以如果存手机号我的建议就是下面的char类型 bigint是8个字节表达方位就是2的64次方。 char型 表达范围0-255字节数,如果是存字母就是255个,因为每个字母只占一个字节,无论是什么编码,如果是存gbk存中文就是2个字节代表一个汉字,所以就是255/2

Oracle 课程一之Oracle体系结构

十年热恋 提交于 2020-02-28 07:16:34
课程目标 •理解ORACLE数据库体系架构—内存结构和进程 •理解SQL在数据库中的运作流程 •理解UNDO&REDO原理 •理解commit原理 1.Oracle数据库概述 •数据库:物理操作系统文件或磁盘的集合。 •实例:一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。 2. Oracle体系结构 任何硬件平台或操作系统下的ORACLE体系结构都是相同的, 包括如下四个方面: •物理结构 数据文件,日志文件,控制文件,参数文件。 •逻辑结构 表空间、段、区间、数据块。 •内存结 共享池,数据缓冲区,日志缓冲区,PGA。 •进程 用户进程、服务器进程、后台进程。 数据文件:select name from v$datafile; 控制文件:select name from v$controlfile; 日志文件:select member from v$logfile; 参数文件:$oracle_home/dbs/initSID.ora(从spfile转换,create pfile from spfile;) 归档日志文件:show parameter log_archive_dest 查看归档模式:archive log list SGA: show sga/show parameter sga/v$sgastat PGA:

mysql_技能10_索引优化准备

旧城冷巷雨未停 提交于 2020-02-28 04:55:21
show [session|global] status 提供服务器状态信息。 show [session|global] status 可以根据需要加上参数“session”或者“global”来显示 session级(当前连接)的计结果和 global 级(自数据库上次启动至今)的统计结果。如果不写,默认使用参数是“session”。 下面的命令显示了当前 session 中所有统计参数的值: show status like ‘Com_______’; show status like ‘Innodb_rows_%’; 定位: 慢查询日志 : 通过慢查询日志定位那些执行效率较低的 SQL 语句,用–log-slow-queries[=filename]选项启动时,mysqld 写一个包含所有执行时间超过 longquery_time 秒的 SQL 语句的日志文件。具体可以查看本书第 26 章中日志管理的相关部分。 show processlist : 慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前MySQL在进行的线程,包括线程的状态、是否锁表等,可以实时地查看 SQL 的执行情况,同时对一些锁表操作进行优化。 explain分析执行计划: type性能由好到差的连接类型为

猴子都能懂的数据库避坑指南

你离开我真会死。 提交于 2020-02-27 23:41:42
前言 工作的这些年发现一个比较奇怪的现象就是身边无论是工作十多年的老兵,还是初级刚入行的程序员,在高谈阔论技术和趋势的时候都是人工智能,大数据,区块链,各种框架,语言,算法,AI,BI,CI,DI…… 等等,倒是发现很少有人关注数据库,不知道是因为数据库感觉太低端还是太低调,总是不容易被人提起 技术就是这样,不太关注的地方就不会重视,越是不被重视的地方,掉进坑里的概率就会越大,所以就在这里给大家简单聊聊在使用数据库过程中有哪些防掉坑指南,也可以对刚入行的小朋友有一个提醒的作用,万丈高楼平地起,一定要先打好基础再去考虑上层的建筑,不要舍本逐末 本章主要分以下四个小节(预计读完 5 分钟左右): 数据库为什么重要 数据库有哪些使用技巧 数据库有哪些容易掉进去的坑? 深入学习数据库的建议 数据库为什么重要 很多人在开发过程中不太关注数据库,对于表结构的设计也没什么讲究大多属于“能用就行”,但是根据作者将近十年的开发经验来看的话,只要你是从事 Web 相关领域开发你就无法避免不和数据库打交道, 在Web开发中大多功能操作本质上都是对数据库进行操作 ,不管你用是 Pythod,Java,Ruby 等语言进行 Web 开发,你其实都是在面向数据库进行编程,很多 Web 框架作者为了避免程序员接触数据库的相关知识甚至还封装了一层 ORM (Object Relational Mapping

在mysql中插入多行

自闭症网瘾萝莉.ら 提交于 2020-02-27 20:05:55
这篇文章是社区维基 。 编辑现有答案以改善此职位。 它当前不接受新的答案。 了解更多 。 如果一次插入多行,数据库查询会更快吗: 喜欢 INSERT.... UNION INSERT.... UNION (我需要插入2-3000行) #1楼 BEGIN; INSERT INTO test_b (price_sum) SELECT price FROM test_a; INSERT INTO test_c (price_summ) SELECT price FROM test_a; COMMIT; #2楼 // db table name / blog_post / menu / site_title // Insert into Table (column names separated with comma) $sql = "INSERT INTO product_cate (site_title, sub_title) VALUES ('$site_title', '$sub_title')"; // db table name / blog_post / menu / site_title // Insert into Table (column names separated with comma) $sql = "INSERT INTO menu (menu_title,

mysql 分页 limit 优化

二次信任 提交于 2020-02-27 14:31:11
1.语法: *** limit [offset,] rows 一般是用于select语句中用以从结果集中拿出特定的一部分数据。 offset是偏移量,表示需要的数据是跳过多少行数据之后的,可以忽略;rows表示要拿多少行数据。 2,场景: 前台要展示数据库中数据,需要后台实现分页,传入数据要有“页码page”跟“每页数据条数nums”。 select * from t_table order by id limit (page-1)*nums,nums 3.问题: 当一个数据库表过于庞大,LIMIT offset, length中的offset值过大,则SQL查询语句会非常缓慢 select * from t_table order by id limit 10000000,10 上边SQL语句表示从表t_table 中拿数据,跳过10000000行之后,拿10行 4.优化思路: 1.能不能跳过10000000条数据然后读取10条,而不是读取10000010条数据然后返回10条数据。 2.order by字段需要建立索引 改进后的SQL语句如下: select * from t_table where id >= ( select id from t_table order by id limit 10000000,1 ) limit 10 注:假设id是主键索引

python面试题 -- 网编并发

白昼怎懂夜的黑 提交于 2020-02-27 12:21:54
Python面试重点(进阶篇) 注意:只有必答题部分计算分值,补充题不计算分值。 第一部分 必答题 简述 OSI 7层模型及其作用?(2分) # 应用层:文件传输,文件管理,电子邮件的信息处理# 表示层:确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密# 会话层:验证访问和会话管理# 传输层:为应用程序之间提供端对端的逻辑通信。# 网络层:选择合适的网间路由完成两个计算机之间的多个数据链路,通过路由协议和地址解析协议(ARP)。IP,RIP(路由信息协议),OSPF(最短路径优先协议)# 数据链路层:在物理层提供的比特流的基础上,建立相邻节点之间的数据链路,不可靠的物理介质提供可靠传输 ppp协议# 物理层:规定通信设备,通信链路的特性 简述 TCP三次握手、四次回收的流程。(3分) # 第一次握手:客户端首先向服务端发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的),消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。# 第二次握手:服务端收到客户端的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1,然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后,服务端进入SYN