分页

千万级别的数据库优化

放肆的年华 提交于 2020-02-16 07:19:04
前言 平时在写一些小web系统时,我们总会对mysql不以为然。然而真正的系统易用应该讲数据量展望拓展到千万级别来考虑。因此,今天下午实在是无聊的慌,自己随手搭建一个千万级的数据库,然后对数据库进行一些简单的CRUD来看看大数据情况下的CRUD效率。 结果发现,曾经简单的操作,在数据量大的时候还是会造成操作效率低下的。因此先写下这篇文章,日后不断更新纪录一下自己工作学习到的Mysql优化技巧。 搭建千万级数据库 首先,需要一个测试环境。一开始想到的是写一个SImple JDBC程序然进行简单的数据INSERT。结果发现单线程情况下,每次INSERT了一百多万条的时候效率就变得非常的低下。但是程序也没报OUT MEMORY之类的异常。初步判断应该是单一线程不断的疯狂创建PrepareStatement对象CG没来得及清理造成内存逐渐被吃紧的原因。 后来改进了一下,用多线程的机制。创建十个进程,每个负责一万条数据的插入。这效率一下子提升了好几倍。然而好景不长,很快的Java程序报错:OUT MEMORY。内存溢出了,CG没来得及清理。 这可把我给急的了。插入的太快内存CPU吃紧,插入的太慢又失去了创建测试环境“快”的初衷。后来想了下,既然是要批量插入数据,那么不是可以简单的写一段数据库存储过程吗? 于是,先建立一张测试表,就叫goods表吧。先写sql语句创建表: CREATE

extjs学习笔记(四)带分页的grid

橙三吉。 提交于 2020-02-16 06:51:07
很多时候,我们需要显示在grid中的数据不是短短的几条或者几十条,而是成千上万条。如果让大量的数据一股脑全都显示在一个页面中,可以想象会造成什么样的用户体验。因此,现在几乎所有的grid控件都会支持分页功能。extjs也不例外,它对分页也提供了强大而方便的支持,使得我们在分页处理上可以得心应手。 在extjs中,类Ext.PagingToolbar封装了关于分页的操作,该类从Toolbar继承而来,单从名字上看,我们也猜得出这是一个能够处理分页的工具栏。好吧,那我们就来看看如何构造这样一个工具栏吧。PagingToolbar类的构造函数需要一个json对象来进行配置,在js中,使用json对象来提供所需参数非常方便,这样使得我们可以只填写感兴趣的参数,并且不必关心参数的顺序。我们的分页工具栏常用的配置参数包括: pageSize:每页显示的记录数,默认是20。 store:这个和grid里边的store参数是一样的,因为分页也需要和数据打交道,所以需要这个参数。 displayMsg:显示的分页状态信息,例如“第{0}-第{1}条,一共{2}条",注意一定要有大括号括起来的0,1,2,分别代表当前页的开始,结束,还有全部的记录数,其它的字自己随便写吧,只要读起来通顺就可以了,该信息会显示在分页工具栏的右侧。 displayInfo:是否显示displayMsg,默认是不显示。

AspNetPager常用属性及一些样式

痞子三分冷 提交于 2020-02-16 03:38:22
AlwaysShow 总是显示分页控件,即使要分页的数据只有一页 AlwaysShowFirsLastPageNumbr 是否总是显示第一页和最后一页数字页索引按钮 BackImageUrl 面板的背景图像 BorderColor 控件边框的颜色 BorderStyle 控件边框的样式 BorderWidth 控件边框的宽度 ButtonImageAlign 指定当使用图片按钮时,图片的对齐方式 ButtonImageExtension 当使用图片按钮时,图片的类型,如gif或jpg,该值即图片文件的后缀名 ButtonImageNameExtension 自定义图片文件名的后缀字符串(非文件后缀名),如图片1f.gif的ButtonImageNameExtension即为f CpiButtonImageNameExtension 当前页索引按钮的图片名后缀字符串 CusomInfoSectionWidth 用户自定义信息区的宽度 *CustomInfoTextAlign 用户自定义信息区文本的对齐方式, 就是定义当前为第几页,每页多少条信息的位置 Direction 面板中的文本方向, 主要就是定义导航文字的方向,一般没什么用 Enabled 控件的已启用状态 EnableUrlRewriting 是否启用Url重写 EnableViewState

AspNetPager常用属性及用法 / URLRewrite伪静态与AspNetPager分页控件的结合

时间秒杀一切 提交于 2020-02-16 03:38:06
常用: <webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageIndexBoxType="TextBox" ShowPageIndexBox="Never" UrlPaging="True" CssClass="paginator" CurrentPageButtonClass="cpb" PageSize="1" ShowFirstLast="false" ShowPrevNext="false" OnPageChanged="AspNetPager1_PageChanged"> </webdiyer:AspNetPager> css设置: <style type="text/css"> .paginator{ font:15px Verdana;} .paginator a{ float:left; height:20px; min-width:20px; color:#fff; background:#d8271c; text-align:center; line-height:20px; padding:5px;} .paginator .cpb{ float:left; background:red;height:20px; min-width:20px; color:#fff; text-align

AspNetPager常用属性介绍

南笙酒味 提交于 2020-02-16 03:37:29
AspNetPager常用属性介绍 AlwaysShow 获取或设置一个值,该值指定是否总是显示.默认情况下,当要分页的数据只有一页时,AspNetPager默认会自动危险期而不在页面上显示任何可见内容,将此属性值设为true时,即使总页数只有一页,AspNetPager也将显示分页导航元素. AspNetPager 分页按件,即使要分页的数据只有一页。 CurrentPageButtonPosition 当前页数字按钮在所有数字分页按钮中的位置,可选值为:Beginning(最前)、End(最后)、Center(居中)和Fixed(默认固定) CurrentPageIndex 获取或设置当前显示页的索引。 FirstPageText 获取或设置为第一页按钮显示的文本。 LastPageText 获取或设置为最后一页按钮显示的文本。 NextPageText 获取或设置为下一页按钮显示的文本。 PrevPageText 获取或设置为上一页按钮显示的文本。 PageSize 获取或设置每页显示的项数。(该值获取或设置数据呈现控件每次要显示数据表中的的数据的项数, AspNetPage r根据该值和RecordCount 来计算显示所有数据需要的总页数,即PageCount的值。) PageIndexBoxType:或者或设置页索引框的显示类型

BluePage通用分页类

最后都变了- 提交于 2020-02-16 03:28:28
分页是网站常用的一项功能,如果有一个良好的分页类(函数),可以帮开发者节省不少开发时间. 1 分页要与SQL无关。为什么分页必须与SQL无关呢?很显然,有一定开发经验的朋友,至少都在使用数据库代理类。我们不应该在分页类中global或传递数据库类,至于直接把数据库连接放进去,那更要不得。另外请看第5点。 2 分页要与html及样式分离。与html分离是显而易见的需要的,首先,就算是同一个网站,也会需要不同风格的分页,甚至有些用的还是图片。其次,可以应付不同编码格式。另外,与html和样式分离,即相当于PHP的模板技术一处道理,美工可以修改出自己想要的效果。 3 要考虑变量值问题,并非所有分页都是数字的。比如有些人分页是page=pn123,甚至是page=p123nfadfafdaf。分页类要提供这方面的处理。 4 web协议不仅仅限于http。很多分页类内部就把协议定死了http了,这是不可取的。 仅仅上面最基本的四点,现在所能看到的所谓分页类中,能做到其中两个的,基本上没有。 好吧。我们开始。 5 分页不仅限于数据库分页。有些是对内容的分页,比如把一篇长达上万字的内容进行分页,这样如果把SQL写到类里面的,就更要不得了,一点用也没有。 BluePage是一个通用的分页类,它能帮助你更快地完成分页任务。 先看使用例子: http://www.bluessoft.com

Mybatis的分页工具

╄→гoц情女王★ 提交于 2020-02-16 03:26:08
配置拦截器插件 特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor 。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。 1. 在 MyBatis 配置 xml 中配置拦截器插件 <!-- plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers? --> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 --> <property name="param1" value="value1"/> </plugin> </plugins> 2. 在 Spring 配置文件中配置拦截器插件 使用

Mybatis面试问题集锦

♀尐吖头ヾ 提交于 2020-02-15 13:17:51
1、#{}和${}的区别是什么? 答:mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。 补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签? 答:还有很多其他的标签, 、 、 、 、 ,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中 为sql片段标签,通过 标签引入sql片段, 为不支持自增的主键生成策略标签。 3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗? 答:Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时

解决pagehelper分页不生效

前提是你 提交于 2020-02-15 07:27:19
原来版本: springboot1.5.2 + mybatis1.1.1 + pagehelper4.1.6 生效 (而且不需要额外其他配置) <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- pageHelper 分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency> 升级版本: springboot2.1.4 + mybatis2.0.0 + pagehelper1.2.5 生效 (需要额外的配置,配置文件或配置类) <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId>

分页标签:pager-taglib使用指南

試著忘記壹切 提交于 2020-02-15 00:30:43
一简介, Pager-taglib,支持多种风格的分页显示。实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。 分页方式有两种: 一种是从Action中得到一个List,在页面上通过<pg:item>进行自动分页。 第二种是通过把 pageSize,pageNo两参数传给后台进行数据库分页。 我做两个Demo加以说明对比: 二、准备 把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要) Java代码 <%@ taglib uri= "http://jsptags.com/tags/navigation/pager" prefix= "pg" %> <%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %> 三,jsp (第一种分页方案由<pg:item>自行分页 ) Java代码 <%@ page language= "java" import = "java.util.*" pageEncoding= "UTF-8" %> <