2013 m. vasario 3 d., sekmadienis

MS SQL indexing

Norint pagerinti užklausų veikimą, vienas iš svarbiausių aspektų - planuoti indeksų kūrimą. Norint indeksus naudoti - reikia suprasti tiek indeksų struktūrą, tiek kaip naudojami duomenys.

Pagrindiniai SQL serverio indeksai: heaps, clustered indexes ir non-clustered indexes. SQL Server 2008 atsirado full-text indexing.

SQL Sever duomenis nuskaito vienu iš šių būdų:
- nuskaitydamas visą lentelę (table scan);
- naudodamas indeksus (index).

Heap - lentelė be clustered index. SQL Sever naudoja Index Allocation Map (IAM) puslapius laikyti heap'ams. Heap'ai turi vieną eilutę sys.partitions sistemoje, kur index_id = 0. Pagal nutylėjimą heap turi single partition.


Heap in single partition (paimta iš 


Clustered index - gali būti vienas lentelėje. Įgyvendintas kaip B-tree (balanced). Pagal šį indeksą būna surikiuoti duomenys. Kad geriau suprastume, tai knygoje atitinka turinį.

Clustered indeksai turi vieną eilutę sys.partitions sistemoje, kur index_id = 1.

Clustered indekas in single partition (paimta iš 

Non-clustered index - irgi palaiko B-tree struktūrą. Gal lengviau būtų suprasti, knygoje non-clustered indeksus atitinka "rodyklė", t.y. kur pagal terminą nurodyta, kokiame puslapyje jis paminėtas.

Non clustered index in single partition (paimta iš http://msdn.microsoft.com/en-us/library/ms177484(v=sql.105).aspx)

Lentelė gali turėti 249 non-clustered indeksus. Non-clustered indeksai neįtakoja duomenų rikiavimo (duomenys būna surikiuoti pagal clustered index).

Composite index - naudojamas, kai dažnai ieškoma informacijos keliais būdais. Tokį indeksą gali sudaryti iki 16 stulpelių. Composite indeksas su stulpeliais (col1, col2) ne tas pats, kaip (col2, col1).

Partitioned index - indeksas horizontaliai padalijamas pagal rėžius.

Unique index - užtikrina stulpelio reikšmės unikalumą.

Full-text indexing - palaiko išplėstinės paieškos galimybes. Gali būti vienas indeksas lentelėje arba viewe. Jis gali turėti savyje 1024 stulpelius, kurių tipai: charvarcharncharnvarchartextntextimagexml, and varbinary(max).

Full-text indexing:
http://www.simple-talk.com/sql/learn-sql-server/understanding-full-text-indexing-in-sql-server/

Papildomi nustatymai

Kad indeksai sėkmingai veiktų ir gerintų užklausų veikimą, būtina pakankamai laisvos vietos. Jeigu bus mažai vietos, įsiterpus naujam įrašui, turinys gali pasiskirstyti dviejuose puslapiuose. Tam, kuriant indeksus, nurodomos dvi savybės:

FILLFACTOR - nurodo, kiek vietos procentais reikia lapų viršūnėms (tikslas - sumažinti page splitting):
- naudojamas mažas FILLFACTOR OLTP aplikacijose;
- naudojamas aukštas FILLFACTOR OLAP aplikacijose.

PAD_INDEX - apibrėžia, kiek vietos reikia neindeksuotų lapų viršūnėms.

PAD_INDEX naudojams tik kartu su FILLFACTOR.

How to add global.asax file

http://www.aspdotnet-suresh.com/2011/05/how-to-add-globalasaxcs-file-in-aspnet.html

Upload large files in ASP.NET


<requestLimits maxAllowedContentLength="1024000000" />


http://www.telerik.com/help/aspnet-ajax/upload-uploading-large-files.html

Kaip nuskaityti XML dokumentą?


Dim oDoc As New XmlDocument()
oDoc.Load(fuXmlFile.FileName)

Dim pNum As String = oDoc.DocumentElement.GetElementsByTagName("title")(0).InnerText

Dim arMovies = oDoc.DocumentElement.GetElementsByTagName("movie")
For i As Integer = 0 To arMovies.Count - 1
    Dim oMovie = arMovies.Item(i)
    oMovie.Attributes.GetNamedItem("src").Value
Next

JavaScript: onFocus, onBlur

onfocus priešingas onblur

$(document).ready(function () {
            $('#txtHours').val("Hours");
        });


function onBlur() {
            if ($('#txtHours').val() == "") {
                $('#txtHours').val("Hours");
            };
        };


function onFocus() {
            if ($('#txtHours').val() == "Hours") {
                $('#txtHours').val("");
            };
        };


<asp:TextBox ID="txtHours" runat="server" Width="70px" AutoCompleteType="Disabled" Visible="false" onfocus="onFocus();" onblur="onBlur();"></asp:TextBox>

Kaip nutraukti sesiją ASP.NET?

Paleisti issreset

https://support.gearhost.com/KB/a191/how-to-reset-iis-with-the-iis-reset-command.aspx

Lentelės replikuojamoje ir nereplikuojamoje DB

Nereplikuojamoje:
 Replikuojamoje duomenų bazėje atsiranda papildomas stulpelis rowguid.